Ja, Fehlermeldungen sollte man gefälligst beachten.
Wenn man die einfach so mutwillig/fahrlässig misachtet, dann soll man sich auch nicht Wundern, wenn es irgendwo knallt.
Was saggt denn der Debugger?
Ich empfehle auch einen Blick in das Menü "Start" und dort in Parameter.
Delphi-Quellcode:
function getvarval(str:Pchar):Pchar;
begin
result:=Pchar(VarValueex.Strings[ic+1]);
end;
Und ich empfehle dir ganz dringend ein Tutorial über Pointer.
Daß es bei der TStringList nicht sofort knallt, ist ein Zufall und auf Grund der internen Speicherverwaltung der TStringList begründet.
Aber eigentlich sollte man besser keinen Pointer auf etwas zurückgeben, was nach der Funktion nicht mehr existieren könnte, wie z.B. eine Stringvariable.
Anhand des bissl veröffentlichten Codes (man soll ja schließlich alles Wichtige zeigen, also kann da nichts Wichtiges uns Unbekanntes mehr existieren), wird VarValue und damit auch VarValueEx zu Beginn der Funktion jedesmal neu geladen.
Wozu sind das dann globale Variablen, obwohl sie doch offenbar nur eine lokale Funktion ausüben?