Aktuelle Zeit: 27.05.2017 06:27

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]




Ein neues Thema erstellen Auf das Thema antworten  [ 3 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Ascii-String an Unicode-Dll übergeben ?
BeitragVerfasst: 11.03.2017 16:13 
Offline

Registriert: 27.11.2016 18:13
Wohnort: Erzgebirge
Hallo Leute,

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:
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


Ich muss die Textdatei von UTF-8 in Unicode konvertieren, weil sonst die falschen Zeichen dargestellt werden.

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?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Ascii-String an Unicode-Dll übergeben ?
BeitragVerfasst: 11.03.2017 19:48 
Offline

Registriert: 27.11.2016 18:13
Wohnort: Erzgebirge
Hallo Leute!

Das Thema hat sich erledigt.

Ich hab's hinbekommen.

Code:
ProcedureCDLL UnicodeConvert(*File)
  FileX$ = PeekS(*File,-1,#PB_UTF8) ;das ist wichtig!
  Pfad$ = GetPathPart(FileX$)
  MessageRequester("Test",FileX$)
  Name$ = GetFilePart(FileX$, #PB_FileSystem_NoExtension)
  If ReadFile(0, FileX$, #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


So funktioniert das für mich.

(Ich hatte das Problem vielleicht auch etwas schlecht beschrieben.)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Ascii-String an Unicode-Dll übergeben ?
BeitragVerfasst: 11.03.2017 19:59 
Offline
Benutzeravatar

Registriert: 08.09.2004 00:57
Wohnort: Berlin
Zitat:
(Ich hatte das Problem vielleicht auch etwas schlecht beschrieben.)

Naja, hauptsache Du hast das Problem gelöst und ich brauch nicht mehr Nachzudenken, was Du überhaupt willst oder meinst :mrgreen:

_________________
PureBasic 5.60 | SpiderBasic 2.0 | Windows 10 Pro (x64) | Linux Mint 18.1 (x64)
"Ich möchte gerne die Welt verändern, doch Gott gibt den Quellcode nicht frei."
Bild


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 3 Beiträge ] 

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast


Sie dürfen keine neuen Themen in diesem Forum erstellen.
Sie dürfen keine Antworten zu Themen in diesem Forum erstellen.
Sie dürfen Ihre Beiträge in diesem Forum nicht ändern.
Sie dürfen Ihre Beiträge in diesem Forum nicht löschen.

Suche nach:
Gehe zu:  

 


Powered by phpBB © 2008 phpBB Group | Deutsche Übersetzung durch phpBB.de
subSilver+ theme by Canver Software, sponsor Sanal Modifiye