![]() |
Re: CreateThread
hi,
luckie meinte sein demo, nicht das von delphi! die function muss so aussehen:
Delphi-Quellcode:
und dann der aufruf mit @i!
function threadfunc(p: pointer): [rückgabetyp];
var variable: integer; begin variable := integer(p); end; |
Re: CreateThread
Delphi-Quellcode:
So geht's auch, da spart mann sich eine Zuweisung. Bei "absolute"
function threadfunc(p: pointer): [rückgabetyp]; stdcall;
var variable: integer absolute p; begin ... end; 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 |
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:
Zitat:
Zitat:
|
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: |
Re: CreateThread
Zitat:
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. |
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. |
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