Seite 1 von 1

FileSeek und Chinesische Zeichen

Verfasst: 12.06.2022 20:07
von HemSA
Hallole,
wenn ich das Beispiel mit FileSeek aus der Hilfe mache bekomme ich Chinesische Zeichen zurück.

Der Code ist so:

Code: Alles auswählen

file$ = OpenFileRequester("Datei auswählen...","","Text (.txt)|*.txt|All files (*.*)|*.*",0)
  If file$
    If ReadFile(0, file$) 
      length = Lof(0)                       ; ermitteln der Dateilänge
      FileSeek(0, length - 10)              ; setzen des Zeigers auf 10 Zeichen vor Ende der Datei
      Debug "Position: " + Str(Loc(0))      ; anzeigen der aktuellen Zeigerposition
      *MemoryID = AllocateMemory(10)        ; reservieren des benötigten Speichers für 10 Bytes
      If *MemoryID
        bytes = ReadData(0, *MemoryID, 10)  ; einlesen der letzten 10 Zeichen in der Datei
        Debug PeekS(*MemoryID)
      EndIf
      CloseFile(0)
    EndIf
  EndIf
Die Debugger-Ausgabe ist:

Position: 68
㐳㘵㠷〹਍Ң

Meine Datei ist:

1
12
123
1234
12345
123456
1234567
12345678
123456789
1234567890

Hat da einer eine Idee warum ich statt 1234567890 㐳㘵㠷〹਍Ң zurück bekomme?

Danke schon mal.

Re: FileSeek und Chinesische Zeichen

Verfasst: 12.06.2022 20:14
von STARGÅTE
Das Beispiel ist veraltet. Deine Datei ist vermutlich in ASCII oder UTF8 formatiert.
Debug PeekS(*MemoryID) ließt den 10 Byte langen Speicher aber als Unicode-String (2-Byte-Zeichen).
Probier mal PeekS(*MemoryID, -1, #PB_Ascii)

Re: FileSeek und Chinesische Zeichen

Verfasst: 12.06.2022 20:52
von HemSA
Danke Stargate, nun bekomme ich wenigstens normale Werte zurück. Aber normalerweise sollten ja die Hilfe / Beispiele zu der jeweiligen Version funktionieren. Benutze 5.72.

Re: FileSeek und Chinesische Zeichen

Verfasst: 12.06.2022 21:13
von STARGÅTE
Hab mal ein Bug-Report aufgemacht: https://www.purebasic.fr/english/viewtopic.php?t=79325
Wobei es kein "echter" bug ist, aber durchaus irreführend.