Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - Delphi 1: Objekt- oder Klassentyp erwartet
Alstar - Mi 26.07.06 18:07
Titel: Delphi 1: Objekt- oder Klassentyp erwartet
Hallo!
Da ich keinen entsprechenden Ersatz für die ZLib für Delphi 1 gefunden habe, dachte ich mir, ich könnte die Unit ja auch selber portieren.
Allerdings bin ich jetzt auf einen Fehler gestoßen, der mir zu denken gibt: In der Zeile
Delphi-Quelltext
1:
| constructor TCustomZLibStream.Create(Strm: TStream); |
Zeigt mir der Compiler an:
Zitat: |
Fehler 147: Objekt- oder Klassentyp erwartet.
|
Ich habe keine Ahnung, warum gerade da, der Delphi 1-Compiler spinnt. Die Klasse ist deklariert und das nimmt er auch anstandslos an :nixweiss:
Hat jemand ne Ahnung, was der Fehler is?
Alstar
Edit: Diese Fehlermeldung tritt im Implementations-Teil auf
wdbee - Do 27.07.06 11:01
Um das erkennen zu können, bräuchte man mehr Code
Alstar - Do 27.07.06 11:32
Aha?!
Was möchtest Du denn gerne für Source haben? Vom Deklarationsteil, der Methode davor, der Methode danach?
Alstar
wdbee - Do 27.07.06 11:46
Also die Deklaration diese einen Klasse und der Implementationsteil ab einer Methode davor sollte zeigen, ob der Ort der Fehlermeldung und das Problem des Compilers auch das sind als was wir sie ansehen.
Alstar - Do 27.07.06 11:55
Deklaration:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| TCustomZlibStream = class(TStream) private FStrm: TStream; FStrmPos: Integer; FOnProgress: TNotifyEvent; FZRec: TZStreamRec; FBuffer: array [0..4095] of Char; protected procedure Progress(Sender: TObject); dynamic; property OnProgress: TNotifyEvent read FOnProgress write FOnProgress; constructor Create(Strm: TStream); end; |
Implementation
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31:
| procedure DecompressToUserBuf(const InBuf: Pointer; InBytes: Integer; const OutBuf: Pointer; BufSize: Integer); var strm: TZStreamRec; begin FillChar(strm, sizeof(strm), 0); @strm.zalloc := @zlibAllocMem; @strm.zfree := @zlibFreeMem; strm.next_in := InBuf; strm.avail_in := InBytes; strm.next_out := OutBuf; strm.avail_out := BufSize; DCheck(inflateInit_(strm, zlib_version, sizeof(strm))); try DCheck(inflate(strm, Z_FINISH)) finally DCheck(inflateEnd(strm)); end; end;
constructor TCustomZLibStream.Create(Strm: TStream); begin inherited Create; FStrm := Strm; FStrmPos := Strm.Position; FZRec.zalloc := zlibAllocMem; FZRec.zfree := zlibFreeMem; end; |
Alstar
wdbee - Do 27.07.06 12:07
Was mir sofort auffällt:
In der Deklaration steht die Zeile constructor Create nach der Zeile property OnProgress.
Ob das zulässig ist weiß ich nicht. Stell die Zeile mit constructor mal vor die anderen Zeilen (Meine Logik in solchen Fällen, erst die Klassen-Methoden, dann die Instanz-Methoden, dann die Eigenschaften)
Alstar - Do 27.07.06 12:10
Nein, das funktioniert nicht. Und selbst wenn, hätte es mich gewundert, da es sich ja um ein Delphi 1 spezifisches Verhalten zu handeln scheint und nicht um ein allgemeines Deklarationsproblem
Alstar
wdbee - Do 27.07.06 12:30
Leider sehe ich auch keinen Fehler und meinen D1 habe ich nicht auf den Rechner hier.
Was mir schon mal passiert ist: Ich hatte versteckte Zeichen in der Zeile (durch Tippfehler). Die sorgten auch für seltsame Meldungen. Durch Löschen der ganzen Zeile und neu eintippen war der Spuk vorbei.
Alstar - Do 27.07.06 14:44
wdbee hat folgendes geschrieben: |
[...]Was mir schon mal passiert ist: Ich hatte versteckte Zeichen in der Zeile (durch Tippfehler). Die sorgten auch für seltsame Meldungen. Durch Löschen der ganzen Zeile und neu eintippen war der Spuk vorbei. |
Ist bei mir leider auch nicht der Fall :(
Alstar
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!