hi,
solangsam versteh ich die welt nichtmehr. Ich bekomme diesen fehler nicht weg. Ich versteh ja was er mir sagen will, aber nicht warum^^:
Delphi-Quellcode:
unit mSystem;
interface
uses mRegal, mProdukttyp, Messages, Windows, SysUtils, Variants, Classes, Graphics,
Controls, Forms, Dialogs,mProduktlistenGlied,mNamenliste ,mListe ;
type
TSystem =
class(TObject)
private
Regalliste : TListe;
Typenliste : TListe;
public
Procedure Oncreate;
function gib_RegalNamen:TNamenliste;
end;
implementation
Procedure TSystem.Oncreate;
Begin
Regalliste := tliste.create('
',
nil);
Typenliste := tliste.create('
',
nil);
end;
function TSystem.gib_RegalNamen:TNamenliste;
Var
Namenliste : TNamenListe;
i : Integer;
Regal: tregal;
Regalname:
String;
Begin
Namenliste:= tNamenListe.create('
');
//Fehler!
Regal := Regalliste.findeObjekt('
')
as TRegal;
Regal := Regalliste.liefereNachfolger(Regal)
as TRegal;
while Regal <>
nil Do
Begin
RegalName := IntToStr(Regal.GibRegal_NR);
Namenliste.fuege_ein(RegalName);
fuegeEin(RegalName);
Regal := Regalliste.liefereNachfolger(Regal)
as TRegal;
end;
result := Namenliste;
end;
und in der letzten Zeile zeigt er mir den fehler an.
hier mal die
unit mNamenliste:
Delphi-Quellcode:
unit mNamenListe;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics,
Controls, Forms, Dialogs;
type
TNamenListe =
class (TList)
private //Attribute
Schluessel:
String;
Nachfolger:TNamenListe;
public //Methoden
procedure fuegeEin(pSchluessel:
String);
function findeListenGlied(pSchluessel:
String):TObject;
function entferneListenGlied(pSchluessel:
String):boolean;
function liefereNachfolger(pSchluessel:
String):TObject;
Constructor create(pSchluessel:
String);
end;
implementation
Constructor TNamenListe.create (pSchluessel:
String);
Begin
Schluessel := pSchluessel;
Nachfolger :=
nil;
end;
als vergleich mal die
unit mListe. bei der Prozedur OnCreate in mSystem mache ich ja exakt dasselbe mit Regallliste und Typenliste, der einzige unterschied ist das sie nicht vom Typen TNamenliste sondern vom Typen TListe sind. Und da läuft es wunderbar!
Delphi-Quellcode:
unit mListe;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics,
Controls, Forms, Dialogs;
type
TListe =
class (TList)
private //Attribute
Schluessel:
String;
Nachfolger:TListe;
Objekt : TObject;
public //Methoden
procedure fuegeEin(pObjekt:TObject;pSchluessel:
String);
function findeObjekt(pSchluessel:
String):TObject;
function entferneObjekt(pSchluessel:
String):boolean;
function liefereNachfolger(pObjekt:TObject):TObject;
Constructor create (pSchluessel:
String;pObjekt:TObject);
end;
implementation
Constructor TListe.create (pSchluessel:
String;pObjekt:TObject);
Begin
Schluessel := pSchluessel;
Objekt := pObjekt;
Nachfolger :=
nil;
end;
also die fehlermeldung möchte mir ja weißmachen das es sich beim methodenaufruf kein objekt oder klassentyp vorher angegeben haben, aber mit tNamenliste hab ich das auch eigentlich gemacht, die
unit mSystem kennt auch die
unit mNamenliste und der Constructore wurde so aufgerufen wie er deklariert(?) wurde. sieht jemand vllt. den fehler?
lg
Pin