.
- NicTheQuick
- Ein Admin
- Beiträge: 8809
- Registriert: 29.08.2004 20:20
- Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti - Wohnort: Saarbrücken
Re: JCALG1 und 64Bit
Moment....
Warum sollte der Packer nicht unter 64-Bit laufen? Ich sehe davon in der Hilfe nichts (wobei man der auch nicht immer glauben darf).
Und wieso geht's dann plötzlich um den Adressraum? Verstehe ich nicht. Erklär mal genauer, was du meinst.
Warum sollte der Packer nicht unter 64-Bit laufen? Ich sehe davon in der Hilfe nichts (wobei man der auch nicht immer glauben darf).
Und wieso geht's dann plötzlich um den Adressraum? Verstehe ich nicht. Erklär mal genauer, was du meinst.
- 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
Re: JCALG1 und 64Bit
Weil PureBasic BriefLZ unter x64 nimmt, d.h. mit PB unter x86 gepackte Dateien lassen sich unter x64 nicht entpacken und versa vice.NicTheQuick hat geschrieben:Warum sollte der Packer nicht unter 64-Bit laufen? Ich sehe davon in der Hilfe nichts (wobei man der auch nicht immer glauben darf)
Dies, sowie weitere Unzulänglichkeiten haben mich ja veranlasst das zBin Packer SDK zu schreiben

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.

- NicTheQuick
- Ein Admin
- Beiträge: 8809
- Registriert: 29.08.2004 20:20
- Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti - Wohnort: Saarbrücken
Re: JCALG1 und 64Bit
Also der Code aus der Hilfe funktioniert bei mir 1a, auch wenn ich nur 4 GB RAM habe und der schon zu 3 GB ausgereizt ist. Man sollte allerdings vorher den darin enthaltenen Fehler beheben und aus 'SizeOf(Long)' ein 'SizeOf(Integer)' machen.
Ansonsten kannst du es unter Windows sowieso vergessen Daten mit mehr als 4 GB innerhalb eines Prozesses zu verarbeiten. Siehe dazu Wikipedia unter 4-GB-Grenze und das darin enthaltene Zitat:
///Edit:
Code: Alles auswählen
Dim Tableau(10) ; Tabelle mit 11 Elementen
; Füllen der Tabelle
For i=0 To 10
Tableau(i) = i
Next
If CreatePack("/tmp/test.pak")
; Hinzufügen und Komprimieren der Daten der Tabelle
AddPackMemory(@Tableau(), SizeOf(Integer)*11, 9)
ClosePack()
EndIf
; Setzen der Tabelleninhalte auf Null
For i=0 To 10
Tableau(i) = 0
Next
; Öffnen der gepackten Datei
If OpenPack("/tmp/test.pak")
*Pointeur=NextPackFile() ; Liest und entpackt den Speicherbereich
Taille=PackFileSize() ; Ermittelt die Größe des Speicherbereichs
; Kopiert den entpackten Speicherbereich in die Tabelle
CopyMemory(*Pointeur, @Tableau(), Taille)
ClosePack()
EndIf
; Lesen der Tabelle
For i=0 To 10
Debug Tableau(i)
Next
Mit einem Streaming-fähigen Packer wäre das allerdings trotzdem möglich.Unter Windows kann ein einzelner 32bit-Prozess generell nicht mehr als 2 GB belegen, außer IMAGE_FILE_LARGE_ADDRESS_AWARE ist im Header der Anwendung aktiviert (dann sind bis zu 3 GB möglich auf einem 32bit-Windows, bzw. 4 GB auf einem 64bit-Windows).
///Edit:
Scheiße, ich hab doch gewusst, dass da irgendwas war. *Kopf -> Tisch*ts-soft hat geschrieben:Weil PureBasic BriefLZ unter x64 nimmt, d.h. mit PB unter x86 gepackte Dateien lassen sich unter x64 nicht entpacken und versa vice.NicTheQuick hat geschrieben:Warum sollte der Packer nicht unter 64-Bit laufen? Ich sehe davon in der Hilfe nichts (wobei man der auch nicht immer glauben darf)
Dies, sowie weitere Unzulänglichkeiten haben mich ja veranlasst das zBin Packer SDK zu schreiben
- 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
Re: JCALG1 und 64Bit
Eine schlanke Exe bekommst Du auch mit der zlib.lib:
Ich weiß jetzt nicht wie groß der Import ist, aber viel größer wird er nicht sein.
Gruß
Thomas
Code: Alles auswählen
ImportC "zlib.lib"
uncompress(*dest, *destLen, *source, sourceLen)
EndImport
Procedure zipUnpackMemory(*source, *dest)
Protected sourceLen = MemorySize(*source)
Protected destLen = MemorySize(*dest)
If Not uncompress(*dest, @destLen, *source, sourceLen)
ProcedureReturn destLen
EndIf
EndProcedure
Gruß
Thomas
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.

Re: JCALG1 und 64Bit
irgend jemand hatte den entpack-teil von jcalg nach x64 portiert.
allerdings weiss ich nicht mehr wer es war, ob hier oder im engl. forum.
allerdings weiss ich nicht mehr wer es war, ob hier oder im engl. forum.
Rings hat geschrieben:ziert sich nich beim zitieren