Autor Beitrag
Alstar
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 827



BeitragVerfasst: Mi 26.07.06 18:07 
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
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 628
Erhaltene Danke: 1



BeitragVerfasst: Do 27.07.06 11:01 
Um das erkennen zu können, bräuchte man mehr Code
Alstar Threadstarter
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 827



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 628
Erhaltene Danke: 1



BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 827



BeitragVerfasst: Do 27.07.06 11:55 
Deklaration:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
{ Abstract ancestor class }
  TCustomZlibStream = class(TStream)
  private
    FStrm: TStream;
    FStrmPos: Integer;
    FOnProgress: TNotifyEvent;
    FZRec: TZStreamRec;
    FBuffer: array [0..4095of Char;
  protected
    procedure Progress(Sender: TObject); dynamic;
    property OnProgress: TNotifyEvent read FOnProgress write FOnProgress;
    constructor Create(Strm: TStream);
  end;


Implementation
ausblenden volle Höhe 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
    {if} DCheck(inflate(strm, Z_FINISH)) {<> Z_STREAM_END then
      raise EZlibError.CreateRes(@sTargetBufferTooSmall);}

  finally
    DCheck(inflateEnd(strm));
  end;
end;

{ TCustomZlibStream }

constructor TCustomZLibStream.Create(Strm: TStream);
begin
  inherited Create;
  FStrm := Strm;
  FStrmPos := Strm.Position;
  FZRec.zalloc := zlibAllocMem;
  FZRec.zfree := zlibFreeMem;
end;


Alstar
wdbee
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 628
Erhaltene Danke: 1



BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 827



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 628
Erhaltene Danke: 1



BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 827



BeitragVerfasst: Do 27.07.06 14:44 
user profile iconwdbee 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