Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi CreateThread (https://www.delphipraxis.net/22302-createthread.html)

Meflin 15. Mai 2004 19:59

Re: CreateThread
 
hi,
luckie meinte sein demo, nicht das von delphi!
die function muss so aussehen:
Delphi-Quellcode:
function threadfunc(p: pointer): [rückgabetyp];
var variable: integer;
begin
  variable := integer(p);
end;
und dann der aufruf mit @i!

nico42 26. Mai 2004 09:43

Re: CreateThread
 
Delphi-Quellcode:
function threadfunc(p: pointer): [rückgabetyp]; stdcall;
var variable: integer absolute p;
begin
  ...
end;
So geht's auch, da spart mann sich eine Zuweisung. Bei "absolute"
sollte man aber schon wissen, was man tut ;-)

Ach ja, normalerweise sollte man Callback-Funktionen IMMER mit
stdcall deklarieren. Das funktioniert hier nur ausnahmsweise
ohne weil die threadfunc nur einen Parameter hat...

Grüße,

Nico

Luckie 26. Mai 2004 14:12

Re: CreateThread
 
Wenn du den Thread mit BeginThread startest, dann darfst du die Thread-Funktion nicht als stdcall deklarieren. Das macht der Wrapper BeginThread schon.

Zitat:

Das mit dem Glossar meine ich so das ein Leihe das nicht wirklich versteht sondern nur jemand der schon lange in der Materie drin ist... Viele Sachen sind einfach zu undeutlich erklärt.
Hm, ich war eigentlich der Meinung, dass ich es verständlich erklärt hätte. Dass es sich nicht an einen Delphianfäger richtet dürfte klar sein.

Zitat:

Steht alles drin wie es funktioniert müsste aber wenig bis gar keine Beispiele z.b. für die Aufrufe von Threads.
Was meinst du, warum ich fast zu jedem Kapitel ein Demo dazu gemacht habe? :roll: Wenn man natütlich nicht in der Lage ist sich das runterzuladen:
Zitat:

Zitat von Homepage
Threads_mit_Delphi.pdf 21-Feb-2004 02:40 371k Thread Tutorial für Delphi. Version 2.0 [PDF]
Threads_mit_Delphi.zip 21-Feb-2004 02:41 393k Thread Tutorial für Delphi. Version 2.0 [PDF und Demos]

Dann kann ich auch nicht mehr helfen.

pmpch 13. Okt 2005 09:49

Re: CreateThread
 
Ich hatte dasselbe Problem, habe aber rausgefunden worans liegt. Die Funktion 'ping', die den Callback erhält, muss als stdcall definiert werden, sonst kriegt man undefinierbare Werte für 'Item' zurück. In meinem Fall war es immer 0!!

mfg
pmpch

p.s. Da ich neu bin halt ich mich lieber etwas zurück, trotzdem möchte ich kurz etwas erwähnen. Wenn jemand ein Frage zu CreateThread hat, weil er genau diese Funktion benutzen will, dann zwingt ihm doch nicht was anderes auf. Ich benütze auch diese API-Funktion direkt, da die ganzen Klassenaufrufe meinen Code nur unnötig verschalteln. Jeder hat seine Gründe. :wink:

Olli 13. Okt 2005 12:19

Re: CreateThread
 
Zitat:

Zitat von pmpch
Da ich neu bin halt ich mich lieber etwas zurück, trotzdem möchte ich kurz etwas erwähnen. Wenn jemand ein Frage zu CreateThread hat, weil er genau diese Funktion benutzen will, dann zwingt ihm doch nicht was anderes auf. Ich benütze auch diese API-Funktion direkt, da die ganzen Klassenaufrufe meinen Code nur unnötig verschalteln. Jeder hat seine Gründe. :wink:

BeginThread hat aber nichts mit Klassen zu tun. Es ist eine einfache Funktion, nicht mehr (nix Methode also).
Ich persönlich benutze auch kaum BeginThread, weil ich lieber GlobalAlloc() usw. verwende. Wenn man den Delphi-Speichermanager verwendet sollte man aber wirklich BeginThread benutzen, auch wenn ich das selber vermutlich nicht in allen meinen Programmen konsequent gemacht habe.

EWeiss 4. Apr 2007 22:47

Re: CreateThread
 
Schon alt aber immer noch aktuell
Deshalb lehne ich mich hier nochmal an..

Ich benutze ebenfalls CreateThead in meiner DLL da sich die Winamp Plugins mit BeginThread
nicht oder ungenügend ansprechen lassen.

Beendet wird der Thread nach dem entladen 'Freelibrary' mit ExitThread(0).

Nun weiß ich aber nicht ob der Thread tatsächlich beendet ist
da ich bei einigen Plugins nach 2>3 maligen start die meldung bekomme 'unable register windowclass'
Bin jetzt etwas ratlos wie ich prüfen kann woran das liegt oder warum es auftritt.

Die vermutung!
Der Thread wurde nicht beendet ,Dll nicht richtig entladen was anderes fällt mir sonst nicht ein.

Hätte da jemand eine Idee?

Edit: Hat sich erledigt ;)

Gruss Emil


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:41 Uhr.
Seite 2 von 2     12   

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