Character-Variablen
- PureBasic4.0
- Beiträge: 785
- Registriert: 29.10.2006 17:26
- Wohnort: 127.0.0.1
Character-Variablen
Hi, Leute
Ich möchte Character Zahlen in eine Datei reinschreiben. Funktioniert auch soweit. Wenn ich jetzt aber große Zahlen größer 200 (aber kleiner als 255) in die Datei reinschreibe und die Datei hinterher mit PB wieder öffne und die Zahlen auslese, bekomme ich oft negative Zahlen heraus. Weiß jemand, wo das Problem liegt?
Danke,
PureBasic4.0
Ich möchte Character Zahlen in eine Datei reinschreiben. Funktioniert auch soweit. Wenn ich jetzt aber große Zahlen größer 200 (aber kleiner als 255) in die Datei reinschreibe und die Datei hinterher mit PB wieder öffne und die Zahlen auslese, bekomme ich oft negative Zahlen heraus. Weiß jemand, wo das Problem liegt?
Danke,
PureBasic4.0
PB 4.50 RC1 + Ubuntu 10.04 LTS + Windows 7 x64
-
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
byte ist vorzeichenbehaftet.
ist aber kein problem, benutze "Zahl & 255", dann eliminierst du das vorzeichen.
ist aber kein problem, benutze "Zahl & 255", dann eliminierst du das vorzeichen.
Code: Alles auswählen
a.b = -93
Debug a
Debug a & 255
Debug Chr(a & 255)
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Der Weise weiß, dass er ein Narr ist.
-
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
- PureBasic4.0
- Beiträge: 785
- Registriert: 29.10.2006 17:26
- Wohnort: 127.0.0.1
- remi_meier
- Beiträge: 1078
- Registriert: 29.08.2004 20:11
- Wohnort: Schweiz
lol tatsächlich
so gehts

Code: Alles auswählen
CreateFile(0, "test.txt")
WriteCharacter(0, 255)
CloseFile(0)
ReadFile(0, "test.txt")
Debug ReadCharacter(0)
Code: Alles auswählen
CreateFile(0, "test.txt")
WriteCharacter(0, 255)
CloseFile(0)
ReadFile(0, "test.txt")
c.c = ReadCharacter(0)
Debug c
-
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
yo, wenn ich das zweite beispiel verwende, klappt alles, auch mit ner schleife für die werte...
@4.0
ich kann mir nicht vorstellen, dass du irgendwo debug verwendest.
also ist das wohl ein type-problem beim direkten verwenden des rückgabewertes.
mich würde jetzt wirklich mal interessieren, wie dein code an der stelle aussieht, wo der fehler auftritt.
@4.0
ich kann mir nicht vorstellen, dass du irgendwo debug verwendest.
also ist das wohl ein type-problem beim direkten verwenden des rückgabewertes.
mich würde jetzt wirklich mal interessieren, wie dein code an der stelle aussieht, wo der fehler auftritt.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Der Weise weiß, dass er ein Narr ist.
- remi_meier
- Beiträge: 1078
- Registriert: 29.08.2004 20:11
- Wohnort: Schweiz
Es hat nichts mit dem direkten verwenden des Rückgabewertes zu tun,
das mach ich bei c.c = ReadCharacter(0) ja auch. Nur wird hier halt die
-1 als 255 dargestellt, da Character-Variablen in ASCII-Mode zwar auch
nur 1 Byte haben, aber bei der Ausgabe als unsigned interpretiert werden.
Das Problem liegt darin, dass entweder ReadCharacter() falsch deklariert
wurde (nicht Character als Rückgabetyp, sondern Byte), oder Debug nicht
mit zurückgegebenen Character-Werten von Funktionen klar kommt.
das mach ich bei c.c = ReadCharacter(0) ja auch. Nur wird hier halt die
-1 als 255 dargestellt, da Character-Variablen in ASCII-Mode zwar auch
nur 1 Byte haben, aber bei der Ausgabe als unsigned interpretiert werden.
Das Problem liegt darin, dass entweder ReadCharacter() falsch deklariert
wurde (nicht Character als Rückgabetyp, sondern Byte), oder Debug nicht
mit zurückgegebenen Character-Werten von Funktionen klar kommt.
- PureBasic4.0
- Beiträge: 785
- Registriert: 29.10.2006 17:26
- Wohnort: 127.0.0.1
Der Code, der die Datei schreibt:
Der Code, der aus der Datei liest:
Code: Alles auswählen
Red = Red(Farbe)
Green = Green(Farbe)
Blue = Blue(Farbe)
WriteCharacter(1,Red)
WriteCharacter(1,Green)
WriteCharacter(1,Blue)
Code: Alles auswählen
Red = ReadCharacter(1)
Green = ReadCharacter(1)
Blue = ReadCharacter(1)
Debug "Rot:"+Str(Red) ;Negative Zahl (bei hohen Zahlen)
Debug "Grün:"+Str(Green) ;Negative Zahl (bei hohen Zahlen)
Debug "Blau:"+Str(Blue) ;Negative Zahl (bei hohen Zahlen)
Farbe = RGB(Red,Green,Blue)
PB 4.50 RC1 + Ubuntu 10.04 LTS + Windows 7 x64
- ts-soft
- Beiträge: 22292
- Registriert: 08.09.2004 00:57
- Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel - Wohnort: Berlin
Solange Du Deine Variablen richtig deklarierst, gibt doch keine Problem
Es sollte zwar auch anders gehen
, aber richtig deklarieren sollte man sowieso
Es sollte zwar auch anders gehen

Code: Alles auswählen
Red.b = Red($DD69EA)
Debug Red
File.l = CreateFile(#PB_Any, "c:\test.bin")
If File
WriteCharacter(File, Red)
CloseFile(File)
EndIf
File.l = ReadFile(#PB_Any, "c:\test.bin")
If File
readRed.c = ReadCharacter(File)
Debug readRed
CloseFile(File)
EndIf
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
