Seite 1 von 1

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

Verfasst: 11.10.2009 01:37
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é

Re: Long mit mehr als 4 Bytes???

Verfasst: 11.10.2009 02:13
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

Re: Long mit mehr als 4 Bytes???

Verfasst: 11.10.2009 03:33
von edel
Versuch es mal mit

Code: Alles auswählen

Hex(serial,#PB_Long)

Re: Long mit mehr als 4 Bytes???

Verfasst: 11.10.2009 14:14
von real
Danke für die beiden Hinweise. Funktionieren beide... :D