PDA

Ver la Versión Completa : novato en cuanto a los objetos delphi


seduerey
09-11-2003, 18:19:49
tengo un problema cuando realizo los create de una clase arbol que estoy realizando....

La clase es esta :

TTreeMap = class (TObject) {clase de arbol AVL}
private
campoordenacion : String;
objeto : TObject;
bal : Integer;
HijoIzq : TTreeMap;
HijoDer : TTreeMap;
public
Constructor CreateTTRee(ord:String;Obj:TObject);
.... y el resto de los mñetodos

Pues bien, cuando llego a ejecutar el constructor me da un error y al depurarlo no consigo llegar a los valores es un "Valor inaccesible"

Constructor TTreeMap.CreateTTRee(ord:String;Obj:TObject);
begin
inherited Create;
self.campoordenacion := ord;
self.objeto := Obj;
self.HijoIzq := NIL;
self.HijoDer := NIL;
end;

¿¿Pueden decirme en que estoy fallando?? hasta ahora me habia apoyado en BBDD, por lo que no lo he necesitado hasta ahora

roman
09-11-2003, 20:39:13
Probé el código que pones y no causa ningún error. Quizá el problema esté con los parámetros que le pasas al constructor ya que uno de ellos es un objeto y habría que ver como estás construyendo dicho objeto. Muéstranos un ejemplo de construcción de un objeto TTreeMap.

// Saludos

jachguate
10-11-2003, 01:06:37
Sería interesante que indiques también el mensaje de error que te da, y si es dentro del código de tu constructor, antes o después (lo podes comprobar con el debugger).

Hasta luego.

;)

seduerey
10-11-2003, 21:10:39
El error es el siguiente (creia haberlo puesto, vaya memoria tengo):

Project oydeuss.exe raised exception class EAccessViolation with message "......":Write of address 00000004

supongo que es xq accedo a algun nil, pero creia que deberia ser así

El código que falla es el siguiente en el insertar dentro del TTreeMap:


if self = NIL then begin
q := NIL;
q.CreateTTRee(key,Obj);
self := q;
h := true;
end


q es otro TTreeMap, y que sea NIL significa que hemos llegado a un nodo hoja del arbol. Estaba acostumbrado a hacerlo asi en Pascal... ¿que ha cambiado? ... por cierto, Obj tb es NIL.

¿No tiene que ser NIL? bueno, espero respuestas

delphi.com.ar
10-11-2003, 21:33:03
seduerey comentó:
q.CreateTTRee(key,Obj);

Aquí esta el error!

La sintaxis para crear una nueva instancia de una clase, es Clase.Constructor, y esto devuelve la nueva instancia, es decir el objeto.

Q := TTreeMap.CreateTTRee(key,Obj);

Saludos!

seduerey
10-11-2003, 21:38:42
:( Ya decia yo que siempre me daba error el crear un objeto.... muchas gracias!!!! el que no sabe es como el que no ve!!!!