Huhu,
es tut mir leid aber ich muss nochmal "Nerven". Ich hole mir einen String (die Antwort) folgendermaßen aus der
DLL. Ist der String 2000 Lang klappt alles. Irgendwo bei 2500 liegt die grenze ab der ich dann komischerweise ein "Out of Memory" bekomme. Also 3000 Zeichen geht gar nicht. Ich versuche mal den Source wo es "knallt" hier zu Posten. Das ist ein kleines Testprogramm, dort kann ich die länge von dem String den haben möchte übergeben.
In der
DLL mache ich das...
Delphi-Quellcode:
var
Answer :WideString;
procedure GetTxt(A:PWideChar;L:Integer); cdecl;
var
i :Integer;
begin
Answer:='';
for i:=0 to L-1 do begin
Answer:=Answer+'A';
end;
Move(Answer,A^,Length(Answer));
end;
Im Programm das...
Delphi-Quellcode:
procedure TfMain.btnGetTxtClick(Sender: TObject);
var
line :WideString;
begin
SetLength(Antwort,StrToInt(edtTextLen.Text));
GetTxt(@Antwort,StrToInt(edtTextLen.Text));
SetString(line,PWideChar(@Antwort[0]),Length(Antwort)); // hier geht es in die Hose. Wie gesagt ab ca. 2500 Zeichen. Bei 2000 klappt es
end;
Ich habe gestern wie wild gegoogelt aber ich finde nichts. Es spielt auch keine Rolle ob die
DLL mit Delphi 10.4 oder 2007 erstellt wurde.
Vielen Dank im voraus