Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Kann Thread nicht mehr starten (https://www.delphipraxis.net/90152-kann-thread-nicht-mehr-starten.html)

TheMiller 12. Apr 2007 13:55


Kann Thread nicht mehr starten
 
Hallo,

ich versuche, einen Thread mit BeginThread zu starten. Dazu benutze ich folgenden Code:

Delphi-Quellcode:
function TForm1.Calc: Integer;
begin
  result:=1;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  ThreadID: DWORD;
  ThreadHandle: THandle;
begin
  ThreadHandle:=BeginThread(nil, 0, @Calc, nil, 0, ThreadID);
end;
Doch immer, wenn ich das Projekt starten will, meckert der Compiler und setzt mir den Cursor hinter "@Calc". Der Compiler sagt:

Zitat:

Zitat von Compiler
[Fehler] Unit1.pas(36): Variable erforderlich.

Was habe ich für einen Fehler gemacht?

danke

Luckie 12. Apr 2007 14:02

Re: Kann Thread nicht mehr starten
 
Deine Thread-Prozedur darf keine Methode sein. Da Methoden immer noch den unsichtbaren Self-Parameter haben, stimmt die Parameterliste nicht mehr mit dem Prototypen über ein.

TheMiller 12. Apr 2007 14:07

Re: Kann Thread nicht mehr starten
 
Aber Funktionen und Prozeduren sind doch Methoden. Ich muss doch irgendwas aufrufen, was in dem Thread geschehen soll. Oder habe ich dich da falsch verstanden

Luckie 12. Apr 2007 14:16

Re: Kann Thread nicht mehr starten
 
Nein sind sie nicht. Sie werden erst dann zu Methoden, wenn sie zu einer Klasse gehören. Nimm die Funktion aus der Klasse raus.

Der richtige Prototyp lautet übrigens so:
Delphi-Quellcode:
type TThreadFunc = function(Parameter: Pointer): Integer;

TheMiller 12. Apr 2007 14:18

Re: Kann Thread nicht mehr starten
 
Tatsache funktionert. Ich danke dir. Ich bin immer davon ausgegangen, dass alle Funktionen und Prozeduren Methoden sind... Aber man lernt ja eben nie aus...

Danke


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:10 Uhr.

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