Das Pos+Copy kannst du weglassen und die Automatik dafür nutzen:
Delphi-Quellcode:
function TTwixapi.GetMainEntry(ID_MainEntry: Integer): AnsiString;
begin
SetLength(Result, 1023);
//if TwixGetMainentry(ID_MainEntry, @pTmpStr[0], 1023+1) then
if TwixGetMainentry(ID_MainEntry, @pTmpStr[0], Length(Result)+1) then
Result := PAnsiChar(Result)
else
Result := '';
end;
(ein String hat noch eine #0 hinten dran, für die PChar-Kompatibilität)
Delphi-Quellcode:
function TTwixapi.GetMainEntry(ID_MainEntry: Integer): AnsiString;
var
TmpStr: Array[0..1023] of AnsiChar;
begin
//if TwixGetMainentry(ID_MainEntry, @TmpStr[0], 1024) then
if TwixGetMainentry(ID_MainEntry, @TmpStr[0], Length(TmpStr)) then
Result := @TmpStr; // oder Result := PAnsiChar(@TmpStr)
else
Result := '';
end;
Nur kann ich mir nicht vorstellen, wie bei deiner 1. Variante (in Post #1) dieses Speicherleck entstehen soll.