Einzelnen Beitrag anzeigen

Edlmann

Registriert seit: 19. Nov 2010
212 Beiträge
 
#1

Thread in eigene Klasse einbinden?

  Alt 16. Dez 2010, 13:18
Guten Nachmittag liebe DP,

ich arbeite im Moment an einem Programm zur Wegfindung (zum späteren Bau eines simplen 2D-Spiels) und benutze hierfür den
AStar-Algorithmus. Das Funktioniert soweit auch schon ganz gut, allerdings habe ich bisher die Berechnung des Pfades in einen
Thread ausgelagert, den ich jetzt in eine eigene Klasse einbinden Möchte. Ich erzeuge den Thread mit folgendem Aufruf:

Delphi-Quellcode:
var
  ThreadParams: PThreadParams;
  ThreadID: Cardinal;
begin
  New(ThreadParams);
  ThreadParams.Handle := FormHnd;
  CloseHandle(BeginThread(nil, 0, @Thread, ThreadParams, 0, ThreadID));
Nun möchte ich meinen Thread (die Funktion Thread, die Hier verwendet wird und damit die Pfadfindung) in eine eigene Klasse einbinden.
Also dass ich etwas deklarieren kann vom Typ TPathFinder, um mehrere Pfadfindungen parallel laufen zu lassen. Soweit so gut, Problem dabei:
Sobald ich die Thread Funktion in meine eigene Klasse einbinde, meckert er dass er als Funktion eine Variable übergeben haben will.

Der Aufruf sieht dann wie folgt aus:

Delphi-Quellcode:
  New(ThreadParams);
  ThreadParams.Handle := FormHnd;
  CloseHandle(BeginThread(nil, 0, @MyPather.Thread, ThreadParams, 0, ThreadID));
Warum funktioniert dies nicht? Der Header der Funktion Thread sieht wie folgt aus:
function TPathFinder.Thread(p: PThreadParams): Integer; Danke im Vorraus, Edlmann.

Geändert von Edlmann (16. Dez 2010 um 14:33 Uhr)
  Mit Zitat antworten Zitat