Delphi - Objeto

 
Vista:

Objeto

Publicado por fabio (1 intervención) el 24/04/2003 16:33:17
Hola a todos, tengo el siguiente problema:
Tengo una unit sencilla, donde solo defino un objeto de la siguiente forma:

TUserRec = class
username: string;
idgrp: integer;
dirworking: string;
end:

cuando en otra unit o form incluyo la unit anterior y creo una instancia de dicho objeto de la siguiente forma:

usr: TUserRec;

usr.Create;

el programa aborta. Cual puede ser el motivo???
Espero puedan ayudarme y guiarme en esto de los objetos.
Saludos y gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Objeto

Publicado por Ernesto De Spirito (706 intervenciones) el 24/04/2003 18:51:23
El constructor normalmente se llama con la clase ("TUserRec"), y en tal caso asigna memoria para el objeto, realiza las inicializaciones (ejecuta el código del constructor) y devuelve un puntero a la instancia, que es lo que guardas en la variable objeto ("usr"):

usr := TUserRec.Create;

Cuando el constructor se llama con una variable objeto es para realizar la inicialización de los datos, pero se supone que la memoria del objeto ya había sido asignada, pero si lo llamas sin haber previamente creado un objeto, la variable "usr" valdrá NIL (o apuntará a cualquier parte), y se producirá una AV al intentar referenciar algún campo de la clase (por ejemplo, al tratar de hacer una inicializacion).

O sea, esto está bien:

usr := TUserRec.Create; // Asigna memoria y reinicializa
usr.Create; // Reinicializa (precaución)

Esto está mal:

var
usr : TUserRec;
begin
usr.Create; // MAL : Inicializa sin haber creado

Ernesto De Spirito
http://www.latiumsoftware.com/es/index.php
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar