.

Windowsspezifisches Forum , API ,..
Beiträge, die plattformübergreifend sind, gehören ins 'Allgemein'-Forum.
NoUser

.

Beitrag von NoUser »

.
Zuletzt geändert von NoUser am 01.09.2012 07:19, insgesamt 2-mal geändert.
Benutzeravatar
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

Beitrag von NicTheQuick »

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.
NoUser

Re: JCALG1 und 64Bit

Beitrag von NoUser »

.
Zuletzt geändert von NoUser am 01.09.2012 07:19, insgesamt 1-mal geändert.
Benutzeravatar
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

Beitrag von ts-soft »

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)
Weil PureBasic BriefLZ unter x64 nimmt, d.h. mit PB unter x86 gepackte Dateien lassen sich unter x64 nicht entpacken und versa vice.

Dies, sowie weitere Unzulänglichkeiten haben mich ja veranlasst das zBin Packer SDK zu schreiben :wink:
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.
Bild
Benutzeravatar
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

Beitrag von NicTheQuick »

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.

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
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:
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).
Mit einem Streaming-fähigen Packer wäre das allerdings trotzdem möglich.

///Edit:
ts-soft hat geschrieben:
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)
Weil PureBasic BriefLZ unter x64 nimmt, d.h. mit PB unter x86 gepackte Dateien lassen sich unter x64 nicht entpacken und versa vice.

Dies, sowie weitere Unzulänglichkeiten haben mich ja veranlasst das zBin Packer SDK zu schreiben :wink:
Scheiße, ich hab doch gewusst, dass da irgendwas war. *Kopf -> Tisch*
NoUser

Re: JCALG1 und 64Bit

Beitrag von NoUser »

.
Zuletzt geändert von NoUser am 01.09.2012 07:19, insgesamt 1-mal geändert.
Benutzeravatar
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

Beitrag von ts-soft »

Eine schlanke Exe bekommst Du auch mit der zlib.lib:

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
Ich weiß jetzt nicht wie groß der Import ist, aber viel größer wird er nicht sein.

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.
Bild
NoUser

Re: JCALG1 und 64Bit

Beitrag von NoUser »

.
Zuletzt geändert von NoUser am 01.09.2012 07:19, insgesamt 1-mal geändert.
Benutzeravatar
Rings
Beiträge: 977
Registriert: 29.08.2004 08:48

Re: JCALG1 und 64Bit

Beitrag von Rings »

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.
Rings hat geschrieben:ziert sich nich beim zitieren
Antworten