Hallo,
ich habe jetzt mehrere Stunden an einer 'Invalid Pointer Operation' gehockt und weiß einfach nicht, was hier schiefläuft.
Die Funktion, die den Fehler wirft, sieht so aus:
Delphi-Quellcode:
function UnparseExpression(expression:string;varstack:ttempstack):string; stdcall;
var
start,len,insertid:integer;
dummy:string;
begin
// now reparse the stinking thing ;)
start := Pos('$', expression);
while ( start > 0 ) do begin
len := start+1;
while ( partofint(expression[len+1]) ) do
inc(len);
dummy := copy(expression, start+1, len-start);
insertid := strtoint(dummy);
delete(expression, start,len-start+1);
dummy := 'a'; // < hier entsteht schon ein fehler, auskommentiert läuft es
//insert(floattostr(round(varstack.Entry[insertid]*precision_number)/precision_number), expression, start);
start := Pos('$', expression);
end;
result := expression;
end;
Diese Methode steht in meiner
DLL, auch wenn sie nicht exportiert wird. Sie wird von einer anderen Funktion in der
DLL aufgerufen. Aus mir unerklärlichen Gründen wirft Delphi nun ein 'Invalid Pointer Operation' aus nachdem die Funktion beendet ist. Kommentiere ich die Zeile dummy:='a'; aus, dann tut es das nicht. Ich kann ansonsten an anderen Stellen Strings Werte zuweisen und diese auch wieder abrufen - warum hier nicht?
Wäre super, wenn mir jemand helfen könnte.
Mit freundlichen Grüßen
JocalAreaNetwork
PS: Ich glaube es tut zwar nichts zur Sache, aber ich lade die
DLL dynamisch. PartOfInt() ist eine eigene Funktion, die nichts großartiges macht außer zu überprüfen, ob der Char eine Zahl ist.