Hallo
Ich habe folgendes Problem: Ich bin dabei eine Klasse zu schreiben, die Dateien downloaded (mittels Thread). Dazu soll der User u.a. als Übergabe 2 Funktionen mitgeben:
Eine update-Funktion, die aktuelle Geschwindigkeit und Fortschritt anzeigt
Eine Fertig-Funktion, die aufgerufen werden soll wenn der Download fertig ist.
Delphi-Quellcode:
type
TBinFertig =
procedure(p:pointer;
index:
string);
Tupdaten =
procedure(status:
string;akt,max:integer;speed:real);
Tdownload =
class(Tthread)
FBinFertig:TBinFertig;
Fupdaten:Tupdaten;
...
constructor Create(
url:
string;Bf: TBinFertig;up:Tupdaten);
Soweit sogut, das funktioniert.
Nun möchte ich eine weitere Klasse machen, die eine Datei downloaded, bearbeitet und im Anschluss ausgibt, dass sie fertig ist.
Delphi-Quellcode:
type tspeziell=class
datenbearbeitet:string;
procedure fertig(p:pointer;index:string);
procedure start;
end;
procedure tspeziell.fertig(p:pointer;index:string);
begin
// bearbeitedaten...
end;
procedure tspeziell.start;
begin
tdownload.create('http://www.google.de',fertig,nil); //Hier kommt der Fehler, wenn ich die Procedure "Fertig" übergebe
end;
Klappt aber nicht mit dem Fehler:
incompatible types: regular procedure and method pointer
Wenn ich jedoch die fertig-Procedure nicht als von Child von Tspeziell einbaue funktioniert sie, jedoch habe ich dann keinen Zugriff auf die internen Datas, die ich unbedigt benötige.
Wie kann ich das lösen?