Daß das überhaupt funktioniert?
Du rufst es so auf
PChar := StrPCopy(WideCharArray, AnsiString/UTF8String);
also welche Version wird nun genutzt ... wobei der erste Parameter einen Pointer möchte und einganzes Array übergibst,
Delphi-Quellcode:
function StrPCopy(Dest: PAnsiChar; const Source: AnsiString): PAnsiChar;
function StrPCopy(Dest: PWideChar; const Source: UnicodeString): PWideChar;
Zitat von
R2009:
In der
DLL (C) kommt der nullterminierte String um eins nach rechts verschoben an.
AnsiString/Utf8String hat #0 ($00) und WideString/UnicodeString #0 ($00$00) am Ende.
Ist das CHAR in deinem C ein WCHAR (
Unicode)?
Und das nacht rechts verschoben ... behebst du das mit wtic_pascal oder löst dieses (i+1) diesen Fehler aus.
PS: i<=strlen(Source)+1 kopiert ein Zeichen zuviel, da es mit i=0 anfängt.
> entweder i<=strlen(Source) oder i<strlen(Source)+1