Forum: Object-Pascal / Delphi-Language
Delphi
by sirius,
3. Aug 2007
@Luckie
Funktioniert auch bei mir. Früher ging das doch nicht :gruebel: Ich musst immer extra mit virtualalloc und virtualfree statt getmem und freemem arbeiten (z.B. bei meinem Matheparser der die Funktion auch adhoc implementiert). Naja, vielleicht war ich auch nur zu vorsichtig.
virtualprotect geht so, dass du erst mit virtualquery dir die BaseAdress und die Regionsize holst und dann mit...
Forum: Object-Pascal / Delphi-Language
Delphi
by sirius,
3. Aug 2007
Na gut, aber ich dachte mit getmem angeforderten Speicher kann man nicht ausführen. Da müsste man ja noch ein virtualprotect vorbeischicken.
Edit: Aber funktioniert ja
:gruebel:
Forum: Object-Pascal / Delphi-Language
Delphi
by sirius,
3. Aug 2007
Das funktioiert doch aber nur, wenn ich den durch getmem angeforderten Speicherbereich auch ausführen darf Luckie. Und wann gibts du den Speicher wieder frei?
Edit:
Ich dachte doch eher an sowas (habs jetzt nicht getestet):
function threaddispatcher(Method:ppointer):integer;stdcall;
var ThreadProc:function:integer of object;
begin
ThreadProc:=Method^;
Forum: Object-Pascal / Delphi-Language
Delphi
by sirius,
3. Aug 2007
Du hast das Problem das ThreadFunc eine einfache Funktion sein muss, und keine Methode.
Du musst also erstmal eine "einfache" Dummy-funktion erstellen und in dem einen Parameter pübergibst du halt einen Pointer auf eine Variable TMethod (ähnlich, wie es TThread macht) und kannst dann die Thread-Methode aufrufen.