PWideChar to String Problem mit DLL

PWideChar to String Problem mit DLL

Beitragvon af0815 » 4. Mai 2017, 20:16 PWideChar to String Problem mit DLL

Ich lade dynamisch eine in Delphi erstellte DLL und erhalte im StringBuffer einen Delphistring zurück der maximal StringBuffersize Bytes groß ist. Dieser String ist Null terminiert.

Code: Alles auswählen
function CopyPicDll(Buffer: Pointer; BufferSize: int64;
  StringBuffer: PWideChar; StringBufferSize: int64): ByteBool; stdcall;
begin
  if (@FCopyPicDll <> nil) and (BufferSize > 0) then
    Result := FCopyPicDll(Buffer, BufferSize, StringBuffer, StringBufferSize);
end;
 


Wie kann ich diesen Delphi-String (Ist UTF16/WideString kodiert) wieder zurückverwandeln ?

Wenn ich folgendes verwende (StrRes: PWideChar) dann kommt zwar ein Ergebnis heraus, aber Abfragen wie length() ergeben Schrott. Da dürfte die Länegangabe Schrott geworden sein.
Code: Alles auswählen
 
      CopyPicDll(PBuffer,FMyMemoryStream.Size,StrRes,100);
      Result := UTF16ToUTF8(PWideChar(StrRes),100);
 


Was habe ich da (alles) übersehen ?

Andreas
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).
af0815
 
Beiträge: 3004
Registriert: 7. Jan 2007, 10:20
Wohnort: Niederösterreich
OS, Lazarus, FPC: Win7/Linux (L stable FPC stable) per fpcup | 
CPU-Target: 32Bit (64Bit)
Nach oben

• Themenende •

Zurück zu Windows



Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste

porpoises-institution
accuracy-worried