Einzelnen Beitrag anzeigen

Ydobon

Registriert seit: 3. Mär 2006
245 Beiträge
 
Delphi 10.4 Sydney
 
#1

vom Zeiger zum String

  Alt 18. Nov 2020, 22:38
Hallo!

Zunächst, von C# habe ich absolut keine Ahnung. Also entschuldigt bitte, wen ich Mist schreibe.
Ich habe den Wrapper einer C/C++ DLL für C#. Die DLL kennt nur ASCII-Strings. Beides nicht von mir und ich habe somit keinen Einfluss darauf. Für die Übergabe von Strings wird
Delphi-Quellcode:
var str = "Stringeling";
fixed (byte* byteChars = Encoding.ASCII.GetBytes(str))
verwendet. Zumindest die Richtung ist klar und funktioniert. Wenn ich aber aus der DLL Strings als Rückgabe erhalten möchte, muss ich den entsprechenden Speicherplatz reservieren (50 Leerzeichen sind irgendwie uncool) aber vor allem aus dem byte* irgendwie den String herausholen. In Delphi würde ich wohl einfach die Bytes durchlaufen, bis ich auf #0 treffe. Bei C# finde ich aber keine Möglichkeit und byte* ist auch nicht der ideale Begriff für Suchmaschinen.
Mit einem selbst geschriebenen Header benutze ich die Funktionen schon länger in Delphi-Programmen, Zeiger auf AnsiString, PAnsiChar und und und. Alles möglich. Nur das merkwürdige C# macht da mit.

Ich hoffe, jemand hat mehr Ahnung als ich und kann mir helfen.
  Mit Zitat antworten Zitat