Hier könnt Ihr gute, von Euch geschriebene Codes posten. Sie müssen auf jeden Fall funktionieren und sollten möglichst effizient, elegant und beispielhaft oder einfach nur cool sein.
hjbremer
Beiträge: 822 Registriert: 27.02.2006 22:30
Computerausstattung: von gestern
Wohnort: Neumünster
Beitrag
von hjbremer » 30.04.2008 21:44
Hin und wieder steht man vor dem Problem den Inhalt einer StructurVariablen zu löschen.
Hier ein paar Ideen
Code: Alles auswählen
;1. Beispiel: Structur mit Zahlen löschen
Structure zahl
a.l
b.l
EndStructure
Structure zahlen
StructureUnion
q.zahl
s.s{SizeOf(zahl)}
EndStructureUnion
EndStructure
wert.zahlen
wert\q\a = 123
wert\q\b = 456
Debug wert\q\a
Debug wert\q\b
wert\s = ""
Debug wert\q\a
Debug wert\q\b
Debug "---"
;2. Beispiel: Structur mit ZahlenFelder löschen
Structure zahlF
a.l
b.l[6]
EndStructure
Structure zahlenF
StructureUnion
q.zahlF
s.s{SizeOf(zahlF)}
EndStructureUnion
EndStructure
ww.zahlenF
ww\q\a = 123
ww\q\b[0] = 456
ww\q\b[5] = 654456
Debug ww\q\a
Debug ww\q\b[0]
Debug ww\q\b[5]
ww\s = ""
Debug ww\q\a
Debug ww\q\b[0]
Debug ww\q\b[5]
Debug "---"
;3. Beispiel: Zahlen + FixString
Structure mix
a.l
b.l
d.s{10}
EndStructure
Structure zahlen_string
StructureUnion
q.mix
s.s{SizeOf(mix)}
EndStructureUnion
EndStructure
zs.zahlen_string
zs\q\a = 123
zs\q\b = 456
zs\q\d = "12.04.2008"
Debug zs\q\a
Debug zs\q\b
Debug zs\q\d
zs\s = ""
Debug zs\q\a
Debug zs\q\b
Debug zs\q\d
Debug "---"
;4. bei Structuren die normale Strings beinhalten
; können NUR die Zahlen und FixStrings so gelöscht werden
; und NUR wenn die normalen Strings am Ende stehen !!!
Structure max
a.l
b.l
d.s{10}
e.s ;muß am Ende stehen !!! beinhaltet den Zeiger auf den String
EndStructure
Structure maxi
StructureUnion
q.max
s.s{SizeOf(max)-4} ;hier 4 Bytes abziehen für e.s
EndStructureUnion
EndStructure
zz.maxi
zz\q\a = 123
zz\q\b = 456
zz\q\d = "12.04.2008"
zz\q\e = "Hallo du PBler"
Debug zz\q\a
Debug zz\q\b
Debug zz\q\d
Debug zz\q\e
zz\s = ""
Debug zz\q\a
Debug zz\q\b
Debug zz\q\d
Debug zz\q\e
Debug "---"
Purebasic 5.70 x86 5.72 X 64 - Windows 10
Der Computer hat dem menschlichen Gehirn gegenüber nur einen Vorteil: Er wird benutzt
grüße hjbremer
DrShrek
Beiträge: 1970 Registriert: 08.09.2004 00:59
Beitrag
von DrShrek » 30.04.2008 22:21
Sorry....aber ich glaube Du hast StructureUnion nicht verstanden.
Lese bitte nochmal die Online Hilfe dazu.
Siehste! Geht doch....?!
PB*, *4PB, PetriDish, Movie2Image, PictureManager, TrainYourBrain, ...
hjbremer
Beiträge: 822 Registriert: 27.02.2006 22:30
Computerausstattung: von gestern
Wohnort: Neumünster
Beitrag
von hjbremer » 30.04.2008 23:14
Purebasic 5.70 x86 5.72 X 64 - Windows 10
Der Computer hat dem menschlichen Gehirn gegenüber nur einen Vorteil: Er wird benutzt
grüße hjbremer
NicTheQuick
Ein Admin
Beiträge: 8812 Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200 Ubuntu 24.04.2 LTS GeForce RTX 3080 Ti
Wohnort: Saarbrücken
Beitrag
von NicTheQuick » 03.05.2008 15:43
@Dr. Shreck:
hjbremer trickst eben gerne. Und da bietet sich dieses Forum ja gut für an.
@hjbremer:
Klar ist es so einfach zu lösen, aber mir gefällt die doppelte Strukturierung
nicht. Deswegen baue ich mir dann z.B. ein Macro, das nur die Aufgabe hat,
eine Struktur zu löschen.
Das war jetzt nur ein Alternativvorschlag.
hjbremer
Beiträge: 822 Registriert: 27.02.2006 22:30
Computerausstattung: von gestern
Wohnort: Neumünster
Beitrag
von hjbremer » 03.05.2008 16:28
yeah, ein Macro ist eine gute Lösung und meistens viel einfacher, auch die kleinen Fallen bei Fixstrings in Structuren und StructureUnion hat man dann nicht.
z.B. das Löschen von Fixstrings mit "" initialisiert den FixString mit chr(0), was oft nicht erwünscht ist.
Purebasic 5.70 x86 5.72 X 64 - Windows 10
Der Computer hat dem menschlichen Gehirn gegenüber nur einen Vorteil: Er wird benutzt
grüße hjbremer