Thema: Delphi Pointerfehler in DLL

Einzelnen Beitrag anzeigen

JocalAreaNetwork

Registriert seit: 19. Aug 2005
35 Beiträge
 
Delphi 2006 Architect
 
#1

Pointerfehler in DLL

  Alt 22. Nov 2005, 12:06
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.
  Mit Zitat antworten Zitat