Seite 2 von 2

Verfasst: 10.08.2007 13:38
von Kaeru Gaman
Hartmut hat geschrieben:@kaeru
Stimmt ... der Requester geht ja auch auf :)
nein mein guter, ich meinte nicht deinen OpenFileRequester,
sondern Tills MessageRequester, der das fehlschlagen der öffnung anzeigt.
wenn der filename nicht stimmen würde, würde Till seinen eigenen MsgReq sehen,
und so blöd ist er bestimmt nicht, dann zu fragen, warum ReadString nicht funktioniert.
was ja auch garnicht sein kann, da er ja schreibt
wenn ich das File mit ReadString(0,#PB_Ascii)
auslese bekomme ich statt der Umlaute andere Zeichen in der Debugconsole
also, die datei wird zweifelsfrei gefunden und geöffnet,
lediglich die codierung wird verhunzt.

[edit]
und mir kommt grad der gedanke, ob nicht vielleicht sogar die debugger-ausgabe das problem verursacht, nicht das einlesen...
[/edit]

und ich bleibe dabei, ich wette, die datei ist nicht ANSI sondern UTF-8 oder Unicode.
solange bis du bei deinem befehl ein ausdrückliches #PB_Ascii einfügst,
hängt das von deinen compilereinstellunen ab was er tut.

da ich die fragliche Datei nicht zur hand habe, kann ich nicht feststellen, wie sie codiert ist.

Verfasst: 10.08.2007 14:20
von gnozal

Code: Alles auswählen

; 
; Convert ASCII file to ANSI 
; 
TextFile.s = "c:\Ascii.txt" ; result in Ascii.txt.ANSI.txt 
; 
Stream = ReadFile(#PB_Any, TextFile) 
If Stream 
  BufferLen = Lof(Stream) 
  *Buffer = AllocateMemory(BufferLen) 
  If *Buffer
    ReadData(Stream, *Buffer, BufferLen) 
  EndIf
  CloseFile(Stream) 
  If *Buffer
    OemToChar_(*Buffer, *Buffer) ; in ANSI mode, you can use the same buffer (NOT in unicode)
    Stream = OpenFile(#PB_Any, TextFile + ".ANSI.txt") 
    If Stream 
      WriteData(Stream, *Buffer, BufferLen) 
      CloseFile(Stream) 
    EndIf 
    FreeMemory(*Buffer) 
  EndIf
EndIf

Verfasst: 10.08.2007 14:39
von Onkel-Till
gnozal hat wie immer den Nagel auf den Kopf getroffen :)

Vielen Dank das erspart mir viel arbeit vorallem viele Telefonate
mit dem Softwarehaus ;)