Einzelnen Beitrag anzeigen

Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#1

nonVCL Thread Klasse: Probleme mit der Deklaration

  Alt 7. Mär 2007, 20:11
Hi,

ich schreibe an einer Unit, die das TThread Object für nonVCL Programme implementiert. Leider stoße ich schon ziemlich am anfang auf ein Problem:

Delphi-Quellcode:
unit Threads;

interface

uses
  Windows;

type
  TThread = class(TObject)
  private
    FThreadID: DWORD;
    FThreadHandle: THandle;
    function ThreadCallback(Data: Pointer): LongInt; stdcall;
  public
    constructor Create(CreateSuspended: boolean);
    destructor Destroy; override;

  protected
    procedure Execute; virtual;
  end;

implementation

constructor TThread.Create(CreateSuspended: boolean);
begin
  if CreateSuspended then
  begin
    FThreadHandle := CreateThread(nil, 0, TFNThreadStartRoutine(@ThreadCallback), CREATE_SUSPENDED, 0, ThreadID);
  end
    else
  begin
    FThreadHandle := CreateThread(nil, 0, TFNThreadStartRoutine(@ThreadCallback), nil, 0, ThreadID);
  end;
end;

destructor TThread.Destroy;
begin
  //
end;
Und zwar wird mir "TFNThreadStartRoutine(@ThreadCallback)" angezeigt mit der Meldung "Variable" erforderlich .. ich vermute mal ThreadCallback darf keine Funktion eines Objektes sein ..

Nehme ich die Callback Funktion nun aber aus dem Object raus und deklariere sie einfach im implementation Teil, woher soll ich dann wissen von welchem TThread Object ich die Execute Methode aufrufen soll?

Hat jemand eine Lösung für dieses Problem?
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat