Hallo und einen Wunderschönen Freitag @all
Hallo H. Brill,
Hallo Axolotl,
Das mit der Universal Variable, das hat mir eingeleuchtet.
Brauchte nur etwas länger als wahrscheinlich erwartet.
Wo ich mir momentan etwas den Kopf zum rauchen bring, ist die Folgende Begebenheit.
Für sich losgelöst in einer neuen Datei:
Code: Alles auswählen
If OpenFile(0,ReadMeFile$)
If ReadFile(0,ReadMeFile$,#PB_File_SharedRead )
length = Lof(0)
Bekomme ich also length als Größe der Datei sagen wir 1024
zum anderen habe ich diese Datei berechnung auch losgelöst:
Code: Alles auswählen
If OpenPack(0, ReadMeFile_2$, #PB_PackerPlugin_Zip)
; Listet alle Einträge auf
If ExaminePack(0)
While NextPackEntry(0)
FileLength = PackEntrySize(0, #PB_Packer_UncompressedSize)
Debug "Name: " + PackEntryName(0) + ", Size: " + PackEntrySize(#PB_Any)
Debug FileLength
Ich bekomme den Wert von FileLength mit 2048
Diese beiden Werte für sich betrachtet klappen.
Sobald ich diese in
zwei Prozeduren im Kernprogramm ReadMe-VIEW
Integriere, bekomme ich entweder den einen oder den anderen.
Anzumerken ist, ich schließe beide Dateien erst am Schluss der gesamten Anwendung,
da das Schließen der einzelnen Datei in der Prozedur für sich gesehen bereits wieder WERT 0 ergibt
bei dem Main Teil der Anwendung, wo die gesamten Berechnungen zusammen kommen.
Verwende ich
#PB_Any werden mir bei beiden Prozeduren Fehler ausgewiesen.
Ich muss einen klaren Wert angeben, also Test mit Prozedur 1
OpenFile(1,ReadMeFile$)
Und bei Prozedur 2 nehme ich,
OpenPack(2, ReadMeFile_2$, #PB_PackerPlugin_Zip)
Ich vermutete gestern, dass sich bei Öffnen der pak Datei als OpenFile resp. OpenPak
ein Fehler ergibt.
Ich wollte versuchen, ob es möglich ist, mit nur dem Wert 2048 klarzukommen,
was nicht so erfolgreich war.
Nächster Versuch 1024 als Wert zu verbinden. Was besagte Probleme ergab.
Ohne Werte 1024 ergibt sich zudem ein Problem, bei mir,
Code: Alles auswählen
UncompressMemory(*buff1, FileLength, *buff2, FileLength, #PB_PackerPlugin_Zip)
ergibt immer 0 oder -1
FileLength = 2048 als Beispiel
Code: Alles auswählen
*buff1 = AllocateMemory(FileLength*3)
*buff2 = AllocateMemory(FileLength*6)
UnPackErg= Len( UncompressMemory(*buff1, FileLength, *buff2, FileLength, #PB_PackerPlugin_Zip))
UnPackErg= Lof( UncompressMemory(*buff1, FileLength, *buff2, FileLength, #PB_PackerPlugin_Zip))
UnPackErg= StringByteLength( UncompressMemory(*buff1, FileLength, *buff2, FileLength, #PB_PackerPlugin_Zip))
Reiner Versuch Len() und Lof() und StringByteLength() ....
Ich wollte sehen, ob eine dieser zu einem Resultat führt
Dabei ergibt sich immer ein Fehler, String erwartet.
Da bei besagten Beispielen
Code: Alles auswählen
UncompressMemory(*buff1, FileLength, *buff2, FileLength, #PB_PackerPlugin_Zip)
sowie
Code: Alles auswählen
UnPackErg= StringByteLength( UncompressMemory(*buff1, FileLength, *buff2, FileLength, #PB_PackerPlugin_Zip))
einen String Fehler ergibt, war ich auf die Idee zurückgekommen, mit dem Wert 1024 zu versuchen.
Bis gestern Abend noch nicht erfolgreich gelöst wurde.
Und wie man zusätzlich unschwer erkennt, bin ich etwas
überrascht worden, dass
HEUTE bereits wieder
Freitag ist.
Und ich eigentlich noch immer am selber Position sitze wie letztes Wochenende.
Ich lasse mich nicht entmutigen, ich versuche den Prozess dahinter weiter aufzuschlüsseln und zu verstehen.
Auch meine Gedankenfehler
Prozedur 1 und
Prozedur 2 betreffend vielleicht doch überarbeitend.
Da die Zeit gegen mich arbeitet, wird das etwas schwer in wenigen Stunden hinbekommen
zu haben, und am Morgen jeweils muss ich mich gedanklich zurückversetzen, was meine Überlegungen vom Vortag waren.
Wenn die Zeit nicht immer so stark gegen einen arbeiten würde, wäre es etwas einfacher.
In diesem Sinne versuche ich den Tag so gut es geht wieder dort fortfahren zu können, wo beendet wurde.
Herzliche Grüsse
Christian
H.Brill hat geschrieben: 26.12.2024 14:10
Wenn du damit meine Bezeichnung Universalvariable meinst.
Ich meine ja nur, bei Stringvariablen (.s) kommt Text rein und in numerische Variablen (.i, .l, .q)
kommen numerische Werte rein. In so einen Speicherbereich geht alles rein. Deshalb gibt es die verschiedenen
Poke- und Peek Varianten. Auch andere Zeichen, die kein Buchstabe oder Zahl sind, funktionieren.
Bei einer Memoryvariablen kannst du auch mischen, solange du die Wertigkeit vonz.b. numerischen
Variablen(4 Bytes) beachtest. Spiel (Pb_Ascii mal weglassen) doch einfach etwas damit :
Code: Alles auswählen
zahl.l = 1250
zeile.s = "Betrag : "
length.l = Len(zeile) + 1
*buffer = AllocateMemory(50)
PokeS(*buffer, zeile, length, #PB_Ascii)
PokeL(*buffer + length, zahl)
Debug MemorySize(*buffer)
Debug PeekS(*buffer, length, #PB_Ascii)
Debug PeekL(*buffer + length)
FreeMemory(*buffer)