ThePuppetMaster
Anmeldungsdatum: 18.02.2007 Beiträge: 1837 Wohnort: [JN58JR]
|
Verfasst am: 07.12.2022, 23:15 Titel: |
|
|
HiHo,
öm ... das Problem ist eigentlich ein anderes. Aber, als Lösung bitte folgendes nutzen:
ThreadCreate(..., Cast(any Ptr, ix))
Der sinn der Sache soll sein, das man einen Wert als Wert und nicht einen Pointer auf diesen Wert überträgt (was ganz ganz schlecht wäre, bei schleifenvariablen und Threads).
Auf der anderen Seite (in der thread sub) bekommt man eine pointer variable, die aber nicht auf etwas zeigt, sondern den wert selbst darstellt. Darum wieder zurück "Casten".
Und, bitte als Integer machen -> gb = Cast(integer, userdata)
Integer sind in ihrer größe systemabhängig (unter win32 = 4byte unter 64bit = 8 byte)
Pointer sind ebenfalls systemabhängig. Daher muss ein ...ptr immer als integer behandelt werden. (oder uinteger, das is wurscht, muss nur auf beiden seiden gleich sein)
In der schleife ist das eigentlich egal, da der compiler vor dem cast (normalerweise) erst eine typenconvertierung in der schleifenvariable in das benötigte zielformat durchführt -> integer. Wenn nicht, dann hilft ein:
... threadcreate(..., cast(any ptr, cint(ix)))
oder cuint ... je nachdem was auf der anderen seite raus kommen soll.
MfG
TPM _________________ [ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ] |
|