Seite 1 von 2
Inhalt einer Struktur löschen
Verfasst: 15.05.2009 19:34
von Bisonte
Hallo.
Mal ganz doof gefragt :
Wie lösche ich die Inhalte einer einfachen Stuktur ?
Code: Alles auswählen
Structure test
name.s
plz.l
ort.s
EndStructure
Global Adresse.test
In diesem Falle... Wie leere ich die Variable Adresse ohne alles per hand einzelnd zu löschen. Also Adresse\Name = "" mein ich nicht.
Es geht darum das ich eine extrem grössere Struktur habe und da wollt ich jetzt am besten nicht jeden wert einzelnd löschen.
Verfasst: 15.05.2009 19:42
von Andesdaf
Verfasst: 15.05.2009 19:47
von ts-soft
Code: Alles auswählen
Structure test
name.s
plz.l
ort.s
EndStructure
Global Adresse.test
Adresse\name = "Bisonte"
ZeroMemory_(@Adresse, SizeOf(test))
Debug Adresse\name
Aber ich denke, die Strings werden wohl erst am Programmende aus dem
Speicher verschwinden?
Verfasst: 15.05.2009 19:55
von Bisonte
Tankeschön...
Äh die Strings sind auch sofort leer... also nicht erst nach prg-ende.
(wird wahrscheinlich nur der Pointer gelöscht. meinst du das evt ?)
Verfasst: 15.05.2009 20:00
von ts-soft
> (wird wahrscheinlich nur der Pointer gelöscht. meinst du das evt ?)
Genau das, der Stringmanager wird von unserem Attentat wohl nichts
mitbekommen und die Strings, die keiner nuzten kann bis Programmende
verwalten.
Verfasst: 15.05.2009 20:24
von Kaeru Gaman
es gibt ein wörkraund...
hatte freak mal im englischen gepostet...
ich schau nebenbei mal...
Verfasst: 15.05.2009 20:26
von cxAlex
Nicht Nötig....
Code: Alles auswählen
Procedure FreePBString(*Address) ; Dirty Hack
Protected String.String
PokeL(@String, *Address)
EndProcedure
Define Test.s
Test.s = "HAHA"
Debug Test
FreePBString(@Test)
Debug Test
bzw. das sollte um 1. Call-Ebene schneller sein:
Code: Alles auswählen
Structure FreeString
StructureUnion
Dummy.String
Setter.Integer
EndStructureUnion
EndStructure
Procedure FreePBString(*Address) ; Dirty Hack
Protected String.FreeString
String\Setter\i = *Address
EndProcedure
Define Test.s
Test.s = "HAHA"
Debug Test
FreePBString(@Test)
Debug Test
Verfasst: 15.05.2009 20:30
von Kaeru Gaman
yup, genau das meinte ich...
also, das erste... das zweite ist doch fishy

Verfasst: 15.05.2009 20:30
von ts-soft
> Nicht Nötig....
Der Code ist aber nicht für diesen Fall. Der ist für Hardcore String in
StructureMemory Erzeuger
Ich denke mal, sobald ein String in der Strukture neubelegt wird, wird der
alte auch freigeben.
Verfasst: 15.05.2009 20:33
von Kaeru Gaman
aber grundsätzlich...
wenn man das Struct Element als Element einer LList erzeugt, kann man einfach DeleteElement benutzen.
deswegen würde sich lohnen, eine LList für ein einziges Element zu erstellen.