Einzelnen Beitrag anzeigen

romy

Registriert seit: 4. Aug 2009
4 Beiträge
 
FreePascal / Lazarus
 
#1

Prozedur per Pointer aufrufen

  Alt 22. Dez 2011, 07:46
Hi,

zuerst möchte ich an dieser stelle sagen das dies mein erster post in diesen Forum ist obwohl ich schon 2 Jahre registriert bin.

Auf die Gefahr hin das ich hier im falschen Forum bin, schon zehntausend antworten auf mein Problem gibt frage ich trotzdem.

Ich habe ein Pointer Array:
Delphi-Quellcode:
 
FunktionsMR = Array [0..65535] of Pointer;
Die variable wird so deklariert

Delphi-Quellcode:

FunktionMR : funktionsMR;
Im Index 52880 kommt ein Pointer von einer Prozedur:

Delphi-Quellcode:

FunktionMR[52880] := @_StringSplit;
am Anfang habe ich das ganze so aufgerufen
Delphi-Quellcode:
TMethod(Event).Code := FunktionMR[52880];
TMethod(Event).Data := Self;
Button1.OnClick := Event;
Button1.Click;
das hat aber zu Problemen geführt und außerdem sollte das eine non GUI Anwendung, darum bin ich auf diese Methode umgestiegen

Delphi-Quellcode:

Call(FunktionMR[52880]);
die Call Prozedur sieht so aus:

Delphi-Quellcode:

procedure Call(dummy: pointer);
var
x : pointer;
begin
x := dummy;
asm
CALL x //<----- chrash
end;
end;
Nun ist es aber so ich kann das ganze mit dem pointer FunktionMR[52880] genau einmal aufrufen dann chrasht mir alles zusammen.

Was aber seltsam ist eine Prozedur mit dem pointer FunktionMR[48404] (ArrayDisplay) kann ich so oft aufrufen wie ich will.

Wieso ist das so, mache ich was falsch oder kann ich das ganze irgendwie besser verpacken?

Die Adresse im pointer wurde zugewiesen und stimmt das habe ich mehrmals nachgeprüft.

Ganz so steht es nicht im Quellcode aber das resultat ist das gleiche.

Ich bitte um Hilfe vornherein schon mal ein Riesen danke ihr seid spitze ohne euch wäre ich noch nicht so weit.

MfG

Romy <-- Legasthenikerin bitte um Rücksicht.

PS. die Delphi tags sind echt blöd hab eine halbe Stunde mit den Zeilenumbrüchen gekämpft.
Alex
  Mit Zitat antworten Zitat