Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Event "weiterreichen" (https://www.delphipraxis.net/26017-event-weiterreichen.html)

Luckie 16. Jul 2004 14:31


Event "weiterreichen"
 
Folgendes Problem:

Ich habe in einer Klasse einen FileStream.
Dann habe ich eine zweite Klasse abgeleitet von TFileStream, welche mit einem Fortschritts-ereignis ausgerüstet wurde.

In meiner Klasse weise ich dem OnProgress Event der erweiterten FileStream Klasse eine Prozedur zu:

Delphi-Quellcode:
FileToAdd := TStreamProgressAdapter.Create(TFileStream.Create(Files[i], fmOpenRead));
FileToAdd.OnProgress := FileProgress;
Delphi-Quellcode:
procedure TArchive.FileProgress(Sender: TObject; Done: LongInt);
begin
  if Assigned(OnFileProgress) then
    OnFileProgress(nil, Done);
end;
Meine Klasse:
Delphi-Quellcode:
type
  TOnFileProgress = procedure(Sender: TObject; Done: LongInt);

  TArchive = class(TObject)
  private
    ...
    FOnFileProgress: TOnFileProgress;
    procedure FileProgress(Sender: TObject; Done: LongInt);
  public
    ...
    property OnFileProgress: TOnFileProgress read FOnFileProgress write FOnFileProgress;
  end;
Mein Einsatz im Programm:
Delphi-Quellcode:
procedure TForm1.FileProgress(Sender: TObject; Done: LongInt);
begin
  Progressbar2.Position := Done;
  Progressbar2.Refresh;
  Sleep(500);
end;
Delphi-Quellcode:
Archive.OnFileProgress := FileProgress; // Zeile 86
Delphi meint dazu aber:
Zitat:

[Error] Unit1.pas(86): Incompatible types: 'regular procedure and method pointer'
Wie löse ich jetzt das Problem und reiche das Ereignis aus meiner Klasse weiter?

Pseudemys Nelsoni 16. Jul 2004 14:48

Re: Event "weiterreichen"
 
soweit ich weiss geht das mit nem methodenzeiger der die adresse der prozedur aufnimmt.

also: deine Tdeineprocedure = procedure (irgendwas: var) of object;


weiss es aber leider nichtmehr so genau, sorry.

muss das nochmal nachlesen...

Luckie 16. Jul 2004 14:49

Re: Event "weiterreichen"
 
Das habe ich ja. Kuck dir meine Klasse an.

Pseudemys Nelsoni 16. Jul 2004 14:52

Re: Event "weiterreichen"
 
hm, das "of object" hinter dem methodenzeiger fehlt aber oder seh ich das gerade nur nicht? <g>

Luckie 16. Jul 2004 14:54

Re: Event "weiterreichen"
 
Verdammt. danke. :oops:


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:07 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