Einzelnen Beitrag anzeigen

HalloVonMir

Registriert seit: 3. Jun 2007
4 Beiträge
 
#1

Procedureübergabe bei Threads

  Alt 10. Jan 2018, 20:12
Delphi-Version: 7
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?
  Mit Zitat antworten Zitat