wenn du nicht weiß wie groß der String werden soll solltest du das ganze so machen
Funktionen In
Dll
Delphi-Quellcode:
function TestProc(SourceStr: PChar; var DestStr: PChar): Integer;
begin
DestStr := StrAlloc(length(SourceStr) + 1); //speicher für DestStr anfordern
Move(SourceStr^, DestStr^, length(SourceStr) + 1); //inhalt von SourceStr nach DestStr kopieren
//fals es keine binärdaten sind dann die abschließende #0 (Stringende)
DestStr[length(SourceStr)] := #0; //bei DestStr noch ein #0 anhängen
//falls es doch binärdaten sind ist es besser die Länge zurück zu geben
result := length(SourceStr);
end;
procedure FreeMemFromTestProc(AChars: PChar);
begin
StrDispose(AChars);
end;
Hauptprogramm
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
var LDestStr: PChar;
begin
TestProc('abcdef', LDestStr);
//do something with LDestStr
FreeMemFromTestProc(LDestStr);
end;