Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Procedureübergabe bei Threads (https://www.delphipraxis.net/194822-procedureuebergabe-bei-threads.html)

HalloVonMir 10. Jan 2018 19:12

Delphi-Version: 7

Procedureübergabe bei Threads
 
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?

DeddyH 10. Jan 2018 19:51

AW: Procedureübergabe bei Threads
 
Eine Methode wird als Procedure bzw. Function of object deklariert.
Delphi-Quellcode:
type
  TDingens = procedure(Wuppdi: integer) of object;

HalloVonMir 10. Jan 2018 21:44

AW: Procedureübergabe bei Threads
 
Ah danke!!


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:19 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz