Ich würde gerne mit folgendem Code
den inhalt in meinem Speicher "Explode.Particle" die 2 Testwerte speichern in einer Datei und wieder laden.
Irgendwie klappt das gerade nicht
Vielleicht kann mir wer bitte den Code korrigieren.
PB 5.20 B19
Mfg und danke für die Hilfe
Code: Alles auswählen
Structure Particle
maxparticle.i
fLifeTime.f
EndStructure
UseBriefLZPacker() : EnableExplicit
Global Explode.Particle
Define *Explode.Particle
Procedure SaveStrukt(*explode, file.s)
Protected FF = CreateFile(#PB_Any, file)
Protected *dest = AllocateMemory(SizeOf(Particle))
Protected length
If FF And *dest
length = CompressMemory(*explode, SizeOf(Particle), *dest, SizeOf(Particle),#PB_PackerPlugin_BriefLZ)
If length = 0
MessageRequester("Error","allgemeiner Fehler! CompressMemory")
EndIf
If WriteData(FF, *dest, length) = 0
MessageRequester("Error","allgemeiner Fehler! Writedata")
EndIf
CloseFile(FF)
FreeMemory(*dest)
ProcedureReturn #True
EndIf
ProcedureReturn #False
EndProcedure
Procedure LoadStrukt(file.s)
Protected FF = ReadFile(#PB_Any, file)
Protected length, *source, *dest
If FF
length = Lof(FF)
If length > 0
*source = AllocateMemory(length)
*dest = AllocateMemory(SizeOf(Particle))
If *source And *dest
If ReadData(FF, *source, length) = 0
MessageRequester("Error","allgemeiner Fehler! ReadData")
EndIf
If UncompressMemory(*source, length, *dest, SizeOf(Particle),#PB_PackerPlugin_BriefLZ) = 0
MessageRequester("Error","allgemeiner Fehler! UncompressMemory")
EndIf
FreeMemory(*source)
EndIf
CloseFile(FF)
ProcedureReturn *dest
EndIf
EndIf
ProcedureReturn #False
EndProcedure
;Testwerte
Explode\fLifeTime = 1.0
Explode\maxparticle = 100
;Speichern
SaveStrukt(@Explode,"\test.dat")
Explode\fLifeTime = 0
Explode\maxparticle = 0
;Laden
*Explode = LoadStrukt("\test.dat")
Debug Explode\fLifeTime
Debug Explode\maxparticle
