Einzelnen Beitrag anzeigen

DelTurbo

Registriert seit: 12. Dez 2009
Ort: Eifel
1.212 Beiträge
 
Delphi 2007 Architect
 
#11

AW: Delphi DLL String übergeben

  Alt 28. Mär 2024, 10:46
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
Alle meine Rechtschreibfehler sind Urheberrechtlich geschützt!!
  Mit Zitat antworten Zitat