FileSeek und Chinesische Zeichen

Anfängerfragen zum Programmieren mit PureBasic.
HemSA
Beiträge: 221
Registriert: 16.10.2005 13:59
Wohnort: Manisa / Türkei
Kontaktdaten:

FileSeek und Chinesische Zeichen

Beitrag 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.
PB 4.02 (wegen Disphelper), 5.72 (Windows) (x64)
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 6996
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: FileSeek und Chinesische Zeichen

Beitrag 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)
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
HemSA
Beiträge: 221
Registriert: 16.10.2005 13:59
Wohnort: Manisa / Türkei
Kontaktdaten:

Re: FileSeek und Chinesische Zeichen

Beitrag 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.
PB 4.02 (wegen Disphelper), 5.72 (Windows) (x64)
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 6996
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: FileSeek und Chinesische Zeichen

Beitrag 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.
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Antworten