Das geht in die Hosen
Delphi-Quellcode:
function IB_ExtractBetween(Value, A, B: PAnsiChar): PAnsiChar; cdecl; export;
begin
.....
if bPos > 0 then
begin
Result := PAnsiChar(AnsiString(Copy(tmpValue, aPos, bPos - aPos)));
// Problem
// sobald die Funktion verlassen wird zeigt "Result" auf ungültigen Speicher
// weil der temporäre AnsiString schon freigegeben wurde
end;
end;
end;
Gut möglich, dass das gewünschte Ergebnis immer noch dort im Speicher steht worauf "Result" zeigt.
Stabil ist das aber nicht.