Hi Himitsu,
Zitat:
ich habe mich lange Zeit nicht mehr mit Delphi beschäftigt und stehe nun vor einem Problem
So lange, dass dein Compiler damals noch
ANSI war (<2009), aber nun Er mit
Unicode arbeitet (2009+) und dein Code durch so Dinge wie String/PChar/... nun nicht mehr das Selbe macht?
Ganz genau das ist das Problem
Zitat:
CoTaskMemAlloc((Length(FOutputStreamInt.DataString) + 1));
Irgendwie sieht das eher nach
ANSI aus, anstatt nach
Unicode.
Ich bin so lange raus und es fällt mir sehr schwer, mich in diese alten Strukturen reinzudenken
Gib mir doch mal einen Anschubs, wie das nun mit
Unicode funktioniert.
Und warum seh ich irgendwie nirgendwo etwas von BSTR/WideString?
Weil ich nur einige Stellen des Delphi-Codes gepostet habe
Wie gesagt: es geht ausschließlich um den Teil innerhalb der Delphi-
DLL.
In C# habe ich das schon mit BSTR deklariert ([MarshalAs(UnmanagedType.BStr)]) und die aufgerufene Routine in der Delphi-
Dll verwendet natürlich WideString.
Das schrieb ich ja auch in meinem initialen Beitrag
Zitat:
Ich muss aus C# eine Delphi-
DLL mit Parametern (BSTR -> WideString) aufrufen, in der
DLL ein PDF erzeugen und dieses base64-decodiert wieder zurückgeben.
**
Achte darauf, das du auch einen
Unicode-String in Form von PWideChars zurückgibst
Ist in Delphi 10.1 PChar nicht automatisch PWideChar?
Schaue ich mir mal an - besten Dank.
Edit: Ahhhh - wie kann man das auf Englisch umstellen? Da bekommt man ja die Krise bei dieser Übersetzung.
Wenn in C# ein BSTR, warum dann in Delphi ein PWideChar, anstatt eines WideString?
Mache ich ja (siehe oben)
Die Delphi-
DLL wird überarbeitet?
Wozu dann noch ein Wrapper dazwischen, anstatt direkt?
Was meinst Du mit Wrapper?
Ich habe einen Webservice, der in C# geschrieben ist.
Dieser soll halt das, was die Delphi-
DLL an PDF-Stream erzeugt, an den Caller zurückgeben.
Das ist der ganze Zauber.