Gelöst: Long mit mehr als 4 Bytes bei Hex()???

Anfängerfragen zum Programmieren mit PureBasic.
real
Beiträge: 468
Registriert: 05.10.2004 14:43

Gelöst: Long mit mehr als 4 Bytes bei Hex()???

Beitrag von real »

Hi,

bei folgendem Code:

Code: Alles auswählen

name.s = Space(255)
type.s = Space(255)
serial.l = 0
GetVolumeInformation_("C:\", @name, 255, @serial, 0, 0, @type, 255)
Debug name
Debug Hex(serial)
Debug type
zeigt er bei der Seriennummer "FFFFFFFFBC8ABFB3" an. Wie kann das sein bei einem Long?

Getestet unter PureBasic 4.40 Beta4 ohne Unicode etc.!

Gruß
René
Zuletzt geändert von real am 11.10.2009 14:15, insgesamt 1-mal geändert.
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7031
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: Long mit mehr als 4 Bytes???

Beitrag von STARGÅTE »

Liegt nicht an der Long, sonden an der Procedure Hex()

Die zurückgegebene Zahl (serial) ist negativ, und dafür kann man HEX nicht nehmen.

Code: Alles auswählen

Long.l = -15
Debug Hex(Long)
Es kommt also nicht "-F" raus.
Sondern die dazu gehörige "große" Quad-Hex Zahl, weil Hex() eben eine Quad erwartet.

So gehts trotzdem:
(einfach n Quad draus machen, damit "serial" wieder positiv ist und es kein Überlauf der Long gibt)

Code: Alles auswählen

name.s = Space(255)
type.s = Space(255)
serial.q = 0
GetVolumeInformation_("C:\", @name, 255, @serial, 0, 0, @type, 255)
Debug name
Debug Hex(serial)
Debug type
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
Benutzeravatar
edel
Beiträge: 3667
Registriert: 28.07.2005 12:39
Computerausstattung: GameBoy
Kontaktdaten:

Re: Long mit mehr als 4 Bytes???

Beitrag von edel »

Versuch es mal mit

Code: Alles auswählen

Hex(serial,#PB_Long)
real
Beiträge: 468
Registriert: 05.10.2004 14:43

Re: Long mit mehr als 4 Bytes???

Beitrag von real »

Danke für die beiden Hinweise. Funktionieren beide... :D
Antworten