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;
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?