Seite 1 von 1
Strukturen direkt schreiben (per Speicherzugriff)
Verfasst: 30.06.2014 09:38
von es_91
Hallo.
Ich habe ein riesiges Strukturpacket von deutschen Verben, so sieht es aus:
Code: Alles auswählen
Structure VERBKONJ
Ich.s
Du.s
Er.s
Wir.s
Ihr.s
Sie.s
EndStructure
Structure VERBTEMP
Praesens.VERBKONJ
Praeteritum.VERBKONJ
Perfekt.VERBKONJ
Plusquamperfekt.VERBKONJ
Futur1.VERBKONJ
Futur2.VERBKONJ
EndStructure
Structure VERBFORM
Aktiv.VERBTEMP
Vorgangspassiv.VERBTEMP
Zustandspassiv.VERBTEMP
EndStructure
Structure VERB
Infinitiv.s
Indikativ.VERBFORM
Konjunktiv1.VERBFORM
Konjunktiv2.VERBFORM
Imperativ.VERBFORM
Partizip.VERBFORM
EndStructure
Die Struktur soll so gefüllt werden, dass alle Elemente denselben Wert erhalten. Das bedeutet unglaublich viele Codezeilen für wenig Effekt. Darum wollte ich fragen: kann ich mit
for offset = 0 to sizeof(VERB) über die Struktur iterieren und per Speicherzugriff die Pointer alle auf denselben String setzen?
Etwa so:
Code: Alles auswählen
; Pseudocode:
Newlist Verben.VERB()
AddElement(Verben())
NeuerString$ = "testen"
For x = 0 to SizeOf(VERB) - 8
PokeQ(@Verben() + x, @NeuerString$)
Next
Re: Strukturen direkt schreiben (per Speicherzugriff)
Verfasst: 30.06.2014 09:52
von STARGÅTE
Schreib dir einfach 4 Prozeduren zum setzen von VERBKONJ, VERBTEMP, VERBFORM und VERB.
Dann hast du genau 6 Zuweisungen und 15 Prozeduranweisungen.
Re: Strukturen direkt schreiben (per Speicherzugriff)
Verfasst: 30.06.2014 10:40
von NicTheQuick
Du könntest durchaus per Pointermanipulation jedem Element in deinen Strukturen den selben String "testen" zuweisen. Allerdings war's das auch schon. Wenn du versuchen würdest einen der Strings zu ändern, würde das dann nämlich entweder alle anderen mit ändern oder alle anderen ungültig machen. Warum das genau so ist, wäre jetzt kompliziert zu erklären. Du könntest aber der Einfachheit halber sowas hier machen:
Code: Alles auswählen
Structure VERBKONJ
Ich.s
Du.s
Er.s
Wir.s
Ihr.s
Sie.s
EndStructure
Structure VERBTEMP
Praesens.VERBKONJ
Praeteritum.VERBKONJ
Perfekt.VERBKONJ
Plusquamperfekt.VERBKONJ
Futur1.VERBKONJ
Futur2.VERBKONJ
EndStructure
Structure VERBFORM
Aktiv.VERBTEMP
Vorgangspassiv.VERBTEMP
Zustandspassiv.VERBTEMP
EndStructure
Structure VERB
Infinitiv.s
Indikativ.VERBFORM
Konjunktiv1.VERBFORM
Konjunktiv2.VERBFORM
Imperativ.VERBFORM
Partizip.VERBFORM
EndStructure
Procedure fillStringStructure(*structure.String, nElements.i, value.s)
Protected i.i
For i = 1 To nElements
*structure\s = value
*structure + SizeOf(String)
Next
EndProcedure
Define verb.VERB
Define.i elemente = SizeOf(verb) / SizeOf(String)
Debug "Insgesamt sind es " + elemente + " Strings."
fillStringStructure(verb, elemente, "testen")
Debug verb\Partizip\Aktiv\Praesens\Sie
Debug verb\Konjunktiv1\Vorgangspassiv\Futur1\Wir
Das funktioniert aber nur, solange in der Struktur tatsächlich nur Strings vorkommen und sonst nichts. Ich iteriere hier einfach über alle Strings in der Struktur und setzen den String dort auf den festgelegten Wert.
Re: Strukturen direkt schreiben (per Speicherzugriff)
Verfasst: 01.07.2014 10:44
von es_91
Ja, genau so etwas hatte ich gesucht. Danke, Nic.
Re: Strukturen direkt schreiben (per Speicherzugriff)
Verfasst: 01.07.2014 13:36
von STARGÅTE
Wowow, der Code ist aber sehr sehr labil.
Es funktioniert nur für Strukturen die nur aus Strings besteht. Ein anderes Feld, und das Ding läuft gegen die Wand.
Also schön aufpassen!
Re: Strukturen direkt schreiben (per Speicherzugriff)
Verfasst: 01.07.2014 13:44
von NicTheQuick
Hauptsache das Problem wird einfach gelöst.

Re: Strukturen direkt schreiben (per Speicherzugriff)
Verfasst: 02.07.2014 07:14
von es_91
Dank auch an STARGATE!

Re: Strukturen direkt schreiben (per Speicherzugriff)
Verfasst: 06.07.2014 16:29
von _sivizius
und als Array? also
und dann statt den einzelnen Strukturfeldern Konstanten nehmen um sie Direkt zu bezeichnen?
Re: Strukturen direkt schreiben (per Speicherzugriff)
Verfasst: 06.07.2014 17:01
von NicTheQuick
Natürlich!
Wieso bin ich da nicht gleich drauf gekommen?
Das ist ja viel einfacher. Zwar, immer noch getrickst, aber irgendwie schöner:
Code: Alles auswählen
Structure VERBKONJ
Ich.s
Du.s
Er.s
Wir.s
Ihr.s
Sie.s
EndStructure
Structure VERBTEMP
Praesens.VERBKONJ
Praeteritum.VERBKONJ
Perfekt.VERBKONJ
Plusquamperfekt.VERBKONJ
Futur1.VERBKONJ
Futur2.VERBKONJ
EndStructure
Structure VERBFORM
Aktiv.VERBTEMP
Vorgangspassiv.VERBTEMP
Zustandspassiv.VERBTEMP
EndStructure
Structure VERB
s.s[0]
Infinitiv.s
Indikativ.VERBFORM
Konjunktiv1.VERBFORM
Konjunktiv2.VERBFORM
Imperativ.VERBFORM
Partizip.VERBFORM
EndStructure
Define verb.VERB
Define.i elemente = SizeOf(verb) / SizeOf(String)
Debug "Insgesamt sind es " + elemente + " Strings."
Define i.i
For i = 0 To elemente - 1
verb\s[i] = "test"
Next
Debug verb\Partizip\Aktiv\Praesens\Sie
Debug verb\Konjunktiv1\Vorgangspassiv\Futur1\Wir