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.