ich habe das Problem das ich eine 32 bit Dll für ein anderes Programm benötige.
Dieses Programm kommt nur mit ASCII 32 bit Dll's klar. (64 bit geht nicht!)
Jetzt möchte ich eine Textdatei von UTF-8 in "Windows-Unicode" = UTF-16 konvertieren.
Das funktioniert als EXE-Datei auch wunderbar, aber wenn der Dll im Zielprogramm etwas übergeben wird dann nur als ASCII.
Dabei stimmt dann aber der Pfad nicht mehr.
(Es werden nur noch kryptische/falsche Zeichen als Pfad übergeben.)
Code: Alles auswählen
ProcedureCDLL UnicodeConvert(File$)
Pfad$ = GetPathPart(File$)
MessageRequester("Test",File$)
Name$ = GetFilePart(File$, #PB_FileSystem_NoExtension)
If ReadFile(0, File$, #PB_UTF8)
If CreateFile(1, Pfad$+Name$+"_U.txt")
While Eof(0) = 0
WriteStringN(1, ReadString(0), #PB_Unicode)
Wend
CloseFile(1)
EndIf
CloseFile(0)
Else
MessageRequester("Information","Konnte Datei nicht öffnen!")
EndIf
EndProcedure
Das Programm was die DLL aufruft kann das auch nur per CDECL, ansonsten stürzt es ab.
Also damit es funktioniert muss aber File$ als ASCII übergeben werden, sonst zeigt mir die MsgBox nur falsche Zeichen an.
Wie mache ich das?