Einzelnen Beitrag anzeigen

PinKing

Registriert seit: 21. Nov 2006
20 Beiträge
 
#1

[Fehler] (122): Objekt oder Klassentyp erforderlich

  Alt 10. Feb 2007, 19:34
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
  Mit Zitat antworten Zitat