Hallo und einen wunderschönen guten Morgen @all
Hallo Andersdaf, auch Dir einen wunderschönen Tag,
Vielen herzlichen Dank für Deinen Input, die letzten Tage musste mein Hirnakrobatik wechsel etwas ruhen,
Und ich habe noch einige Fehler feststellen müssen, welche mir zuvor entgangen sind.
Beginn bereits beim Erstellen der "pak" Datei.
Unter der PB eigenen Packer Routine wurde die Datei zuvor erstellt, Größe 1.48 KB, wahrscheinlich aber völlig inkorrekt.
Denn unter LZMA wurde besagte Datei mit 0 Byte erstellt oder überhaupt nicht.
Somit bin ich etwas am Suchen, wo sich der Fehler eingeschlichen haben könnte.
Unterdessen habe ich mich mit dem Erstellen der pak Datei gewidmet.
Ich bin mir nicht sicher, ich habe zwei Fehlermeldungen, welche erscheinen.
Zum einen, dass die Datei "liesmich.txt" nicht geöffnet werden kann. resp. einen
Speicherfehler, der sich im Bereich des Speicherbereiches "target" befindet.
Ich bin nicht sicher, ob es sich dabei um ein Problem intern handelt,
dass die Textdatei nicht Standard konform ist, sprich, UTF-8 oder ASCII oder ANSI oder ob ich sonst etwas übersehe.
Sofern das Öffnen kein Problem machen sollte, gibts dafür wie erwähnt den Speicher Error.
Also habe ich bereits beim Erstellen besagter pak Datei einige Fehler eingebaut
oder noch nicht gelöst, sodass es mit dem Anzeigen der Daten auch noch zu Problemen kommen würde.
Nachdem erstellen der pak Datei an sich, welche Wahlweise mit LZMA oder BriefLZ erstellt wurde
ergeben sich unterschiedliche Szenarien zuerst.
Speicherfehler Adresse XYZ
Datei kann nicht gelesen werden
Ich bin mir bewusst, dass das Aufbauen auf solch skrupellos altem Source viele Hürden beinhaltet
da entweder Befehle gar nicht mehr existieren oder massiv geändert haben.
Heute klappt es mal wieder ganz toll, ich muss meine Texte 100-mal ändern, sodass ich keine Romane schreibe
und immer noch alles in der Hoffnung des Verständlichen bleibt.
Herzliche Grüsse
Christian
===
Die Erkenntnisse und Versuche als Link (readme.txt bedingt):
https://e.pcloud.link/publink/show?code ... QkWHV655VX
===
readme_pak.pb
Code: Alles auswählen
Declare _M(Text$)
; Author: AndyMars (some modifications by ChrigiGee)
; Date: 28. Juli 2024
; OS: Windows
; Demo: unknow
; Part 1/2 of the ReadmePacker - creates a packed readme file,
; later to be included in the ReadmePacker_CreateExe example
;
; ------------------------------------------------------------
;
; PureBasic - Compressor example file
;
; (c) Fantaisie Software
;
; ------------------------------------------------------------
;erstellt mit für PureBasic 6
Procedure _M(Text$)
MessageRequester("Meldung",Text$)
EndProcedure
OpenPreferences("ReadmePacker.ini")
SourceFile.s=ReadPreferenceString("SourceFile","")
TargetFile.s=ReadPreferenceString("TargetFile","")
ClosePreferences()
;UseLZMAPacker()
UseBriefLZPacker() ; Small and fast packer
If CreatePack(0, TargetFile, #PB_PackerPlugin_BriefLZ )
;If CreatePack(0, TargetFile, #PB_PackerPlugin_Lzma )
;EndIf
If ReadFile(0, SourceFile)
FileLength = Lof(0)
; Allocate the 2 memory buffers needed for compression..
;
*Source = AllocateMemory(FileLength)
*Target = AllocateMemory(FileLength + 8)
If FileLength And *Source And *Target
ReadData(0, *Source, FileLength) ; Read the whole file in the memory buffer
CloseFile(0)
; Compress the file, which is in memory
;
;If CreatePack(0, TargetFile, #PB_PackerPlugin_BriefLZ )
;If CreatePack(0, TargetFile, #PB_PackerPlugin_Lzma )
CompressedLength = AddPackMemory(0, *Source, *Target, TargetFile)
If CompressedLength
DecompressedLength = UncompressPackMemory(0, *Target, CompressedLength, TargetFile)
If DecompressedLength = FileLength
Debug *Source
Debug *Target
AddPackMemory(0, *Source, FileLength, TargetFile)
; MessageRequester("Info", "De/Compression succeded:"+#LF$+#LF$+"Old size: "+Str(FileLength)+#LF$+"New size: "+Str(CompressedLength))
Debug "Koprimiert:" + Str(CompressedLength)
Debug "De Komprimiert:" + Str(DecompressedLength )
ClosePack(0)
; Else
; MessageRequester("Error", "Can't compress the file")
; _M("Error - cannot create file: "+TargetFile)
; EndIf
;Else
; _M("Error - compressing failed!")
EndIf
; FreeMemory(*Source)
; FreeMemory(*Target)
; EndIf
Else
_M("Error - cannot open file: "+SourceFile)
; CloseFile(0)
EndIf
EndIf
EndIf
EndIf
End
===
Erkentnisse ReadMe.pb:
Code: Alles auswählen
; German forum: http://www.purebasic.fr/german/archive/viewtopic.php?t=3038&highlight=
; Author: AndyMars (some slightly modifications by Andre for the CodeArchiv, updated for PB3.93 by ts-soft, updated for PB 4.00 by Andre)
; Date: 06. December 2003
; OS: Windows
; Demo: No
; Part 2/2 of the ReadmePacker - includes the packed readme file,
; formerly created with the ReadmePacker_CreatePak source
;Andy Marschner - Switzerland
;RPacks entpacken
;erstellt mit/für PureBasic 3.8
Declare puffer()
Declare _M(Text.s)
Declare _Info()
#Window_FormInfo=1
#Gadget_FormInfo_ButtonOK=1
#Gadget_FormInfo_EditorInfo=2
Global unkompress_puffer
Global kompress_puffer
Global ReadPack
Global ReadPackEnd
Global ReadMePak
Global ReadMePakEnd
Global ReadMeFile$
;AllocateMemory(ReadMePak)
;AllocateMemory(ReadMePakEnd)
ReadMeFile$ = "ReadmePacker_Liesmich.pak"
;- Packer Metode
;UseBriefLZPacker()
UseLZMAPacker()
Procedure.l Window_FormInfo()
If OpenWindow(#Window_FormInfo,100,100,367,218,"Info",#PB_Window_ScreenCentered)
; If CreateGadgetList(WindowID(#Window_FormInfo))
ButtonGadget(#Gadget_FormInfo_ButtonOK,145,195,60,20,"OK")
EditorGadget(#Gadget_FormInfo_EditorInfo,0,0,365,190)
HideWindow(#Window_FormInfo,0)
ProcedureReturn WindowID(#Window_FormInfo)
EndIf
; EndIf
EndProcedure
Procedure puffer()
;- Öffnet die gepackte Datei
; If OpenPack(0, ReadMeFile$,#PB_PackerPlugin_BriefLZ)
If OpenPack(0, ReadMeFile$,#PB_PackerPlugin_Lzma)
unkompress_puffer = PackEntrySize(0, #PB_Packer_UncompressedSize)
kompress_puffer = PackEntrySize(0, #PB_Packer_CompressedSize)
ClosePack(0)
EndIf
EndProcedure
;-ASM Prozeduren ----------------------------------------------------------------------------
Procedure _M(Text.s)
MessageRequester(" Meldung", Text, #PB_MessageRequester_Ok);$
EndProcedure
Procedure _Info()
If Window_FormInfo()
laenge = ?ReadMePakEnd - ?ReadMePak
ReadMePak = ?ReadMePak
ReadMePakEnd = ?ReadMePakEnd
MHndl1 = AllocateMemory(laenge*3)
Debug "3facher Wert von laenge" + " "+ Str(MHndl1)
Debug unkompress_puffer
If MHndl1
; Debug "Entpackte Grösse"+" " +PackEntrySize(ReadMePakEnd,#PB_Packer_UncompressedSize)
; UnPackErg = UncompressMemory(ReadMePak, MHndl1,ReadMePakEnd*12, unkompress_puffer*24,#PB_PackerPlugin_BriefLZ) ;gibt die Länge zurück
UnPackErg = UncompressMemory(ReadMePak, MHndl1,ReadMePakEnd*12, unkompress_puffer*24,#PB_PackerPlugin_Lzma) ;gibt die Länge zurück
; Debug "Rückgabewert muss höher als 0 sein" + " " + Str(UnPackErg)
If UnPackErg
SendMessage_(GadgetID(#Gadget_FormInfo_EditorInfo),#EM_SETREADONLY , 1, 0)
SendMessage_(GadgetID(#Gadget_FormInfo_EditorInfo),#EM_SETTARGETDEVICE, #Null, 0);Wordwrap
SendMessage_(GadgetID(#Gadget_FormInfo_EditorInfo), #EM_LIMITTEXT, -1, 0)
SetGadgetText(#Gadget_FormInfo_EditorInfo,PeekS(MHndl1,UnPackErg))
Else
_M("Fehler in _Info() beim Entpacken der Infodaten!")
EndIf
FreeMemory(MHndl1)
Else
_M("Fehler in _Info(): Konnte Speicher nicht anfordern!")
EndIf
While InfoEnde=0
EventID = WaitWindowEvent()
If EventWindow()=#Window_FormInfo
If EventID = #PB_Event_CloseWindow
InfoEnde=1
ElseIf EventID = #PB_Event_Gadget
Gadget = EventGadget()
If Gadget = #Gadget_FormInfo_ButtonOK
InfoEnde=1
EndIf
EndIf
Else
SetForegroundWindow_(WindowID(#Window_FormInfo))
EndIf
Wend
CloseWindow(#Window_FormInfo)
Else
_M("Fehler in _Info(): Konnte Fenster Window_FormInfo() nicht öffnen!")
EndIf
; ClosePack(0)
EndProcedure
;-MAIN --------------------------------------------------------------------------------------
_Info()
End
ReadMePak:
IncludeBinary "ReadmePacker_Liesmich.pak"
ReadMePakEnd:
; IDE Options = PureBasic v4.00 (Windows - x86)
; Folding = -
; EnableXP
; Executable = C:\Programming\Examples.exe