UnpackMemory - Zielspeichergröße

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7031
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

UnpackMemory - Zielspeichergröße

Beitrag von STARGÅTE »

Tachchen,

Triviale Frage:

Wenn ich eine gepackten Speicherbereich entpacke, die entpackte Größe aber nicht (nicht mehr) kenne, habe ich keine Chance diese herauszufinden oder ? Also bevor ich UnpackMemory anwende ...

Oder steht die im Header des gepackten Bereichs drin ?

Denn wenn ich doch mal zu zuwenig bereit halte, schreibt ja UnpackMemory einfach drüber weg und macht große Probleme ...

Muss ich also beim Anwenden von PackMemory() immer selber noch die Ursprungsgröße noch vorweg speichern?
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
GPI
Beiträge: 1511
Registriert: 29.08.2004 13:18
Kontaktdaten:

Re: UnpackMemory - Zielspeichergröße

Beitrag von GPI »

Mir wäre nichts bekannt. Wäre übrigens keine Schlechte idee in PB das zu erweitern. Einfach einen zusätzlichen Header einfügen und PB sollte beim entpacken kontrollieren ob der Header da ist oder nicht und entsprechen reagieren.
CodeArchiv Rebirth: Deutsches Forum Github Hilfe ist immer gern gesehen!
Benutzeravatar
Batze
Beiträge: 1492
Registriert: 03.06.2005 21:58
Wohnort: Berlin
Kontaktdaten:

Re: UnpackMemory - Zielspeichergröße

Beitrag von Batze »

Ist ja zum Glück nicht so schwer da mal eben ein int mit der Größe davor zu schreiben. Einbauen wäre natürlich auch nett.
Hier sind meine Codes (aber die Seite geht gerade nicht):
http://www.basicpure.de.vu
GPI
Beiträge: 1511
Registriert: 29.08.2004 13:18
Kontaktdaten:

Re: UnpackMemory - Zielspeichergröße

Beitrag von GPI »

Tip: Häng nicht nur ein long für die Größe davor. Mach ein "Header"

bspw.

Code: Alles auswählen

data.l 'MyPC'
data.l <länge>
data <gepackte daten>
das MyPC als kennung davor. Solltest du nämlich, aus welchen Gründen auch immer, mal erweitern müssen, kannst du einfach diesen Magiccode ändern und weitere Datenfelder einfügen. Es ist also leichter erweiterbar. (Wenn dir bspw. später einfällt, das es sinnvoll gewesen wäre, ein CRC-Prüfsumme einzufügen. Mit der Kennung kannst du dann sowohl die alten Daten als auch die neuen Daten laden).
CodeArchiv Rebirth: Deutsches Forum Github Hilfe ist immer gern gesehen!
Benutzeravatar
Batze
Beiträge: 1492
Registriert: 03.06.2005 21:58
Wohnort: Berlin
Kontaktdaten:

Re: UnpackMemory - Zielspeichergröße

Beitrag von Batze »

GPI hat geschrieben:Tip: Häng nicht nur ein long für die Größe davor. Mach ein "Header"

bspw.

Code: Alles auswählen

data.l 'MyPC'
data.l <länge>
data <gepackte daten>
das MyPC als kennung davor. Solltest du nämlich, aus welchen Gründen auch immer, mal erweitern müssen, kannst du einfach diesen Magiccode ändern und weitere Datenfelder einfügen. Es ist also leichter erweiterbar. (Wenn dir bspw. später einfällt, das es sinnvoll gewesen wäre, ein CRC-Prüfsumme einzufügen. Mit der Kennung kannst du dann sowohl die alten Daten als auch die neuen Daten laden).
Würde sogar dazu tendieren noch sowas wie eine versionsnummer zu verwenden, sonst ist der schöne Magiccode verbraucht und man muss was anderes nutzten, obwohl vielleicht nur ein wenig dazugekommen ist.
Hier sind meine Codes (aber die Seite geht gerade nicht):
http://www.basicpure.de.vu
Benutzeravatar
HeX0R
Beiträge: 3042
Registriert: 10.09.2004 09:59
Computerausstattung: AMD Ryzen 7 5800X
96Gig Ram
NVIDIA GEFORCE RTX 3060TI/8Gig
Win11 64Bit
G19 Tastatur
2x 24" + 1x27" Monitore
Glorious O Wireless Maus
PB 3.x-PB 6.x
Oculus Quest 2 + 3
Kontaktdaten:

Re: UnpackMemory - Zielspeichergröße

Beitrag von HeX0R »

Soviel ich weiß steht die Ursprungsgröße bei

Code: Alles auswählen

PeekL(*PackedMemory + 2)
GPI
Beiträge: 1511
Registriert: 29.08.2004 13:18
Kontaktdaten:

Re: UnpackMemory - Zielspeichergröße

Beitrag von GPI »

HeX0R hat geschrieben:Soviel ich weiß steht die Ursprungsgröße bei

Code: Alles auswählen

PeekL(*PackedMemory + 2)

oh, mit sowas wär ich vorsichtig, da undokumentiert... Wäre nett, wenn das in die Dokumentation einfließen würde. Am besten als UnPackedLength()-Funktion.
CodeArchiv Rebirth: Deutsches Forum Github Hilfe ist immer gern gesehen!
Benutzeravatar
Thorium
Beiträge: 1722
Registriert: 12.06.2005 11:15
Wohnort: Germany
Kontaktdaten:

Re: UnpackMemory - Zielspeichergröße

Beitrag von Thorium »

GPI hat geschrieben:
HeX0R hat geschrieben:Soviel ich weiß steht die Ursprungsgröße bei

Code: Alles auswählen

PeekL(*PackedMemory + 2)

oh, mit sowas wär ich vorsichtig, da undokumentiert... Wäre nett, wenn das in die Dokumentation einfließen würde. Am besten als UnPackedLength()-Funktion.
Das ist auch falsch, da es nur für JCalG1 gild, welcher nur unter x86 verwendet wird. Unter x64 ist die Magic vom Header 3 Byte lang.
Dokumentiert ist es aber natürlich: http://www.bitsum.com/jcalg1.htm
Zu mir kommen behinderte Delphine um mit mir zu schwimmen.

Wir fordern mehr Aufmerksamkeit für umfallende Reissäcke! Bild
GPI
Beiträge: 1511
Registriert: 29.08.2004 13:18
Kontaktdaten:

Re: UnpackMemory - Zielspeichergröße

Beitrag von GPI »

Das ist zwar dokumentiert, aber nicht für PureBasic. Großer Unterschied.
CodeArchiv Rebirth: Deutsches Forum Github Hilfe ist immer gern gesehen!
Benutzeravatar
Thorium
Beiträge: 1722
Registriert: 12.06.2005 11:15
Wohnort: Germany
Kontaktdaten:

Re: UnpackMemory - Zielspeichergröße

Beitrag von Thorium »

GPI hat geschrieben:Das ist zwar dokumentiert, aber nicht für PureBasic. Großer Unterschied.
Wieso? PB nutzt die JCalG1 Lib für x86.
Zu mir kommen behinderte Delphine um mit mir zu schwimmen.

Wir fordern mehr Aufmerksamkeit für umfallende Reissäcke! Bild
Antworten