Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   BeginThread - Methoden aufruf (https://www.delphipraxis.net/154125-beginthread-methoden-aufruf.html)

youuu 28. Aug 2010 21:17


BeginThread - Methoden aufruf
 
Hi,

ich möchte eine Procedure mit BeginThread aufrufen, habe aber noch Probleme.

Delphi-Quellcode:
MyClass:= TMyClass.Create; // Klasse erstellt.

FThreadHandle := BeginThread(nil, 0, @MyClass.Scan(o), Pointer(Self), 0, ThreadID); // Aufruf
Jedoch sagt er mr immer "Variable erforderlich" nach
Delphi-Quellcode:
@MyClass.Scan(o)

Björn Ole 28. Aug 2010 21:28

AW: BeginThread
 
Gibt denn MyClass.Scan(o) einen Funktionszeiger zurück?
BeginThread erwartet dort nämlich eine "einfache Funktion", keine Methode.

Delphi-Quellcode:
function ThreadFunc(Parameter: Pointer): Integer;

youuu 28. Aug 2010 21:40

AW: BeginThread
 
Ah, das war eine Metode, es funktionieren aber nur Functionen?

Aber selbst bei einer funktion, erhalte ich diesen Fehler.

Delphi-Quellcode:
function TMyClass.Scan(Kat: Integer): Integer;

SirThornberry 28. Aug 2010 21:43

AW: BeginThread
 
Könntest du deinem Thema bitte einen aussagekräftigeren Titel geben? Danke :)

Björn Ole 28. Aug 2010 21:46

AW: BeginThread
 
Keine Methode (Function/Procedure einer Klasse) benutzen, sondern:

Delphi-Quellcode:
function Blub(Parameter: Pointer): integer;
begin
  // ...
end;

// Aufruf
BeginThread(nil, 0, Blub, nil, 0, ThreadID);

youuu 28. Aug 2010 21:54

AW: BeginThread
 
Ok nun verstehe ich es.

Was ist denn die beste Möglichkeit eine Procedure einer Klasse als Thread auf zu rufen?

1. Klasse ist schon created
2. es muss nur eine bestimmte Procedure der klasse abgearbeitet werden im Thread.

lbccaleb 28. Aug 2010 21:59

AW: BeginThread - Methoden aufruf
 
Wenn mich nicht alles täuscht muss man doch auf die function zeigen?? also

Delphi-Quellcode:
function Blub(Parameter: Pointer): integer;
begin
  // ...
end;

// Aufruf
BeginThread(nil, 0, [COLOR="Red"]@[/COLOR]Blub, nil, 0, ThreadID);
oder nicht??

youuu 28. Aug 2010 22:03

AW: BeginThread - Methoden aufruf
 
Was michauch irritiert, hier wird eine procedure verwendet.

hier

Björn Ole 28. Aug 2010 22:07

AW: BeginThread - Methoden aufruf
 
lbccaleb, geht beides.

So mit einer Methode:
Delphi-Quellcode:
TClass = class
public
  class procedure Blub(Param: Pointer); static;
end;

// Aufruf:
with TClass.Create do
  BeginThread(nil, 0, @Blub, nil, 0, ThreadID);
Ob das so aber vernünftig ist, weiß ich nicht.

Add: SirThornberry und himitsu erklären das im oben genannten Thread wunderprächtig. Ob nun eine function oder procedure übergeben wird, ist im Endeffekt egal.

youuu 28. Aug 2010 22:13

AW: BeginThread - Methoden aufruf
 
Hm, dann habe ich dieses Problem

Instanzenelement 'FslKat' in diesem Zusammenhang nicht verfügbar //FslKat ist eine StringList aus der Klasse im privat Bereich


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:35 Uhr.
Seite 1 von 3  1 23      

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