• Hallo Programmier-Fans!

    DWORD ist ja mit vier Byte der größte Datentyp in R-Basic. Der ist nun zu klein!
    Die größte darstellbare DWORD-Zahl beträgt knappe 4,3 Milliarden. Nun hatte ich aber gigabyte-große Photoshop-Dateien unter dem Mauszeiger. Die größte maß 4,8 GB und sprengte damit das Limit.
    Zum einen kann ich die Dateigröße nicht mehr in einer DWORD-Variablen speichern. Zum anderen streikt auch die interne FileSize-Funktion und liefert einfach null zurück.
    Was kann man da machen? Einen 8-Byte-Datentyp einführen 8) ?
    Bestimmt nicht so einfach. Datentypengrenzen könnten an verschiedenen Stellen lauern: R-Basic, Geos, DOS, Real Mode, Compiler.

    Salute!

  • Hallo Sebi,
    aus meiner Sicht sieht das so aus (soll heißen: Kein Anspruch auf Vollständigkeit / Perfektheit)
    1. R-BASIC Real-Variablen können deutlich mehr als dword, das sind 8 Byte Genauigkeit (im alten SDK sogar 10), wovon 6 Byte (bzw. 8 Byte) Mantisse sind, also für Ganzzahlen zur Verfügung stehen. Also mindesten 64000 mal mehr als dword, entsprechend 280 TB.
    2. Die SDK-Routinen sind für DOS ausgelegt - liefern also DWORD. Da kann R-BASIC nichts machen. Ich weiß nicht mal, was passiert, wenn du eine solche Datei öffenst oder gar bearbeitest. Auch mit dem SDK.
    3. Ob es im Real-Mode überhaupt möglich ist, Dateien mit mehr als 2^32 Byte (dword) korrekt anzusprechen, entzieht sich meiner Kenntnis

    Gruß
    Rainer

    Es gibt 10 Arten von Menschen - die einen wissen was binär ist, die anderen nicht.

  • Hallo Sebi,

    Rainer hat Recht: FileSize geht unter Geos vom 4GB-Limit aus, den es unter dem „normalen“ FAT16 und FAT32 gibt. Das trifft auch für andere Datei-Routinen zu, z.B. FilePos.

    Was in diesem Zusammenhang vielleicht interessant ist:
    Das DiskInfoStruct enthält DIS_freeSpace und DIS_totalSpace als sdword!
    Funktionen wie DiskGetVolumeFreeSpace liefern trotzdem ein dword zurück?! Wie schafft es dann GeoManager, die bis zu 2TB in einer Partition (bei FAT32) richtig anzuzeigen? Gibt es doch irgendwo ein Quadword (alias lword)?

    Grüße
    Jörg

    There are two rules in life:
    1. Never give out all of the information.