Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi [Fehler] (122): Objekt oder Klassentyp erforderlich (https://www.delphipraxis.net/86195-%5Bfehler%5D-122-objekt-oder-klassentyp-erforderlich.html)

PinKing 10. Feb 2007 19:34


[Fehler] (122): Objekt oder Klassentyp erforderlich
 
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

Jens Schumann 10. Feb 2007 19:36

Re: [Fehler] (122): Objekt oder Klassentyp erforderlich
 
Hallo,
Delphi-Quellcode:
Constructor TNamenListe.create (pSchluessel:String);
Begin
    inherited Create; // Das fehlt bei Dir
    Schluessel := pSchluessel;
    Nachfolger := nil;
end;

PinKing 10. Feb 2007 19:45

Re: [Fehler] (122): Objekt oder Klassentyp erforderlich
 
habs ausprobiert aber er zeigt leider immernoch den selben fehler an :(

omata 10. Feb 2007 19:53

Re: [Fehler] (122): Objekt oder Klassentyp erforderlich
 
Versuch mal deinen Konstruktor mir reintroduce zu überschreiben.

Gruss
Thorsten

PinKing 10. Feb 2007 19:56

Re: [Fehler] (122): Objekt oder Klassentyp erforderlich
 
hm,
entschuldige wenn ich jetzt so doof frage aber in meinen 1,5 jahren schulinformatik kam das bisher noch nicht vor^^. wie funktioniert das?
einfach

Delphi-Quellcode:
Constructor create(pSchluessel:String); reintroduce;
? oder mach ich es mir da zu einfach?*gg*

omata 10. Feb 2007 20:03

Re: [Fehler] (122): Objekt oder Klassentyp erforderlich
 
Ja, so meinste ich das. Aber vergiss es wieder. Ich bekomme keinen Fehler das geht auch ohne wunderbar. Kannst du nicht nochmal genau schreiben was und wo da wie etwas falsch läuft? Ich verstehe dein Problem leider nicht wirklich, sorry.

Hawkeye219 10. Feb 2007 20:09

Re: [Fehler] (122): Objekt oder Klassentyp erforderlich
 
Hallo Pin,

hast du in der Unit mListe den Bezeichner tNamenListe ebenfalls zur Definition verwendet, beispielsweise für einen Typ, der keine Klasse darstellt? Die Quelltexte in deinem ersten Beitrag sehen ziemlich "zerpflückt" aus. Ich vermute, du hast sie für das Einstellen hier im Forum abgespeckt und dabei möglicherweise die Fehlerursache mit entfernt. In diesem Fall haben wir keine Chance, den Fehler zu finden.

Gruß Hawkeye

PinKing 10. Feb 2007 20:17

Re: [Fehler] (122): Objekt oder Klassentyp erforderlich
 
hi,
also das ich das programm abgespeckt habe stimmt soweit, wollte nicht unnötig verwirren^^.
mListe und mNamenliste haben eigentlich soweit nichts miteinander zu tun, also in keinem von beiden wird die andere klasse zur definition herangezogen. Aber beide klassen sehen sich ziemlich ähnlich, sie haben die selben Methoden nur unter teilweise anderem namen bzw. andere Parameterliste.

@omata:

also der compiler zeigt mir ein fehler in dieser funktion:

Delphi-Quellcode:
function TSystem.gib_RegalNamen:TNamenliste;
Var
    Namenliste : TNamenListe;
Begin
    Namenliste:= tNamenListe.create('Schluessel'); //genau hier!
Fehlermeldung: [Fehler] mSystem.pas(122): Objekt oder Klassentyp erforderlich

also so wie ich das verstehe scheint er tNamenliste nicht als Klassentyp zu identifizieren. und genau hier liegt der hund begraben, ich kann mir einfach nicht erklären wieso der fehler auftritt.

ich schau das ich den ersten beitrag nochmal editiere und mehr vom programmcode reinpacke.

lg
Pin

mkinzler 10. Feb 2007 20:21

Re: [Fehler] (122): Objekt oder Klassentyp erforderlich
 
Nenne mal deine Unit um.

PinKing 10. Feb 2007 20:32

Re: [Fehler] (122): Objekt oder Klassentyp erforderlich
 
1. Post ist editiert!

welche unit soll ich umbennen?

oki 10. Feb 2007 20:39

Re: [Fehler] (122): Objekt oder Klassentyp erforderlich
 
Zeig mal wie du das Object zu TSystem erzeugst.

Gruß oki

mkinzler 10. Feb 2007 20:43

Re: [Fehler] (122): Objekt oder Klassentyp erforderlich
 
Zitat:

Zitat von PinKing
1. Post ist editiert!

welche unit soll ich umbennen?

Vergiss es hatte mich verguckt, dachte Unit würde wie Klasse heißen.

PinKing 10. Feb 2007 21:06

Re: [Fehler] (122): Objekt oder Klassentyp erforderlich
 
Zitat:

Zitat von oki
Zeig mal wie du das Object zu TSystem erzeugst.

Gruß oki

das hat mich doch ins grübeln versetzt, bzw. bin ich immernoch.
ich erstell zwar in meiner unit eine variable System vom typen tsystem und nutze die auch, finde aber nirgends das ich den constructore aufrufe :shock:
aber daran kann es nicht liegen, denn das Programm hat vorher ganz gut funktioniert, ich frag mich jetzt zwar warum aber das ist im moment nich so wichtig^^

vorher = bevor ich das Programm von Arrays auf Listen umschreiben wollte....

Hawkeye219 10. Feb 2007 21:08

Re: [Fehler] (122): Objekt oder Klassentyp erforderlich
 
Für mich deutet die Fehlermeldung immer noch auf eine Überdeckung des Bezeichners tNamenliste hin. Ein einfacher Test bringt vielleicht neue Informationen.

Pin, ändere bitte die erste Anweisungszeile der Prozedur TSystem.gib_RegalNamen wie folgt ab:

Delphi-Quellcode:
// Namenliste:= tNamenListe.create('');
  Namenliste:= mNamenListe.tNamenListe.create('');
Welche Fehlermeldung erscheint nun?

Gruß Hawkeye

PinKing 10. Feb 2007 21:11

Re: [Fehler] (122): Objekt oder Klassentyp erforderlich
 
ich frage mal nicht nach was ich da gemacht habe ;)
aber die nun auftauchende fehlermeldung ist:

[Fehler] mSystem.pas(122): Inkompatible Typen: 'TNamenliste' und 'TNamenListe'


also verstehen tu ich diese nicht, bin kurz davor mit dem kopf gegen die wand zu rennen nur damit das dort endlich mal etwas reinkommt....

3_of_8 10. Feb 2007 21:15

Re: [Fehler] (122): Objekt oder Klassentyp erforderlich
 
Offenbar hast du zwei verschiedene Typen "TNamenListe" definiert, vielleicht in zwei verschiedenen Units.

Hawkeye219 10. Feb 2007 21:17

Re: [Fehler] (122): Objekt oder Klassentyp erforderlich
 
Schone deinen Kopf noch etwas, den brauchst du bestimmt noch :wink:

Suche nun im Quelltexteditor die folgende Zeile:

Delphi-Quellcode:
function TSystem.gib_RegalNamen:TNamenliste;
Var
    Namenliste : TNamenListe; // << diese Zeile brauchen wir
    i : Integer;
Drücke die [Strg]-Taste und klicke mit der linken Maustaste auf den Bezeichner TNamenListe. Im Editor sollte dir dann die zugehörige Deklaration angezeigt werden. Ich wette, die liegt nicht in der Unit mNamenListe.

Gruß Hawkeye

PinKing 10. Feb 2007 21:30

Re: [Fehler] (122): Objekt oder Klassentyp erforderlich
 
._.
ich weiß nich ob ich mich freuen soll oder laut losbrüllen das ich alles hasse.
Hawkeye du hattest von anfang an sowas von verdammt recht....
den fehler hab ich ganz gekonnt rausgekürzt, hab nämlich in mSystem mir einen Typen TNamenliste deklariert um das ganze als array zu lösen, sprich überrest von der vorgänger version....
-->> :wall: <<-- mehr kann ich dazu nich sagen :oops:

DANKE! :love:

Pin


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:40 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz