Variables Array in Struktur
Variables Array in Struktur
Hallo,
und zwar habe ich eine Struktur, die ein Array enthält. Dieses Array soll für alle Strukturelemente das gesamt Programm hinweg eine konstante Größe haben (so wie es auch die Strukturdefinition verlangt). Nun soll aber diese feste Größe vom Benutzer zu Beginn des Programms (z.B. über eine INI-Datei) festgelegt werden. Leider kann ich aber bei der Größenangabe bei der Arraydefinition nur Konstanten benutzen und eine Konstante darf man nicht mit Datei-Lese-Funktionen verwenden. Gibt es hier irgendwie eine Möglichkeit?
und zwar habe ich eine Struktur, die ein Array enthält. Dieses Array soll für alle Strukturelemente das gesamt Programm hinweg eine konstante Größe haben (so wie es auch die Strukturdefinition verlangt). Nun soll aber diese feste Größe vom Benutzer zu Beginn des Programms (z.B. über eine INI-Datei) festgelegt werden. Leider kann ich aber bei der Größenangabe bei der Arraydefinition nur Konstanten benutzen und eine Konstante darf man nicht mit Datei-Lese-Funktionen verwenden. Gibt es hier irgendwie eine Möglichkeit?
- hardfalcon
- Beiträge: 3447
- Registriert: 29.08.2004 20:46
Ich kenne mich zwar nicht so mit Arrays und Structures aus, aber was die Konstanten angelangt: Ich fürchte nein. Denn Konstanten sind doch (soweit ich weiss) keine Variabeln. Sie sollen ja keinen Speicher kosten, sondern nur den Sourceaufbau leichter nachvollziehbar machen. Konstanten sollten vor dem kompilieren vom Parser durch die entsprechenden (festen) werte Ausgetauscht werden. Sie dienen eigentlich nur als "statische Platzhalter".
Aber frag mal Fred, vielleicht kann er dir das so hinbiegen, dass du eine spezielle Version der entsprechenden Lib kriegst, die auch Variabeln animmt.
Ich hoffe, ich habe mich jetzt bezüglich derKonstanten nicht geirrt.
cya
Pascal
Aber frag mal Fred, vielleicht kann er dir das so hinbiegen, dass du eine spezielle Version der entsprechenden Lib kriegst, die auch Variabeln animmt.
Ich hoffe, ich habe mich jetzt bezüglich derKonstanten nicht geirrt.
cya
Pascal
Sowas hab ich mir schon fast gedacht....
Hier nochmal mein Problem in Form von Code:
Und ich will jetzt, dass irgendwie der Inhalt der Konstante #menge bei Programmstart durch den Benutzer festgelegt werden kann.
Hier nochmal mein Problem in Form von Code:
Code: Alles auswählen
#menge = 10
Structure objekt
adress.l
flag.b
entity.w[#menge]
EndStructure
NewList objekt.objekt()- remi_meier
- Beiträge: 1078
- Registriert: 29.08.2004 20:11
- Wohnort: Schweiz
Um dynamische arrays mit dem (fast) gleichen Komfort zu benutzen:
greetz
remi
EDIT:
hab grad gesehen, dass es auch ohne DisableDebugger geht...
Mit dieser Methode muss bei SortArray Start und Ende angegeben werden, da PB die Länge nicht kennt.
Mit diesem Trick kann man auch sehr einfach einen String auf ein Array aufsplitten:
Achtung: Der Debugger erkennt so keine Übertretungen der Arraygrösse!
Code: Alles auswählen
Structure Test
*Array
anzahlElemente.l
EndStructure
k.Test
k\anzahlElemente = 5
k\array = AllocateMemory(k\anzahlElemente * 4)
Dim Array2.l(0) ;Array für zugriff deklarieren
Array2() = k\array ;Array2 pointer auf structure array umbiegen
Array2(1) = 3 ;ganz normal wie ein array benutzen
Array2(2) = 54 ;er wird einfach in die structure geschrieben
SortArray(Array2(), 1,0,5) ;optionale parameter müssen angegeben werden, da PB hier die Grösse nicht weiss
Debug "----"
For z = 0 To k\anzahlElemente-1
Debug PeekL(k\array + z * 4)
Nextremi
EDIT:
hab grad gesehen, dass es auch ohne DisableDebugger geht...
Mit dieser Methode muss bei SortArray Start und Ende angegeben werden, da PB die Länge nicht kennt.
Mit diesem Trick kann man auch sehr einfach einen String auf ein Array aufsplitten:
Code: Alles auswählen
String.s = "hallo"
Dim Array.b(0)
Array() = @String
For z = 0 To Len(String) - 1
Debug Chr(Array(z))
Next- remi_meier
- Beiträge: 1078
- Registriert: 29.08.2004 20:11
- Wohnort: Schweiz
- remi_meier
- Beiträge: 1078
- Registriert: 29.08.2004 20:11
- Wohnort: Schweiz
LOL, das ist ja tatsächlich undokumentiertremi_meier hat geschrieben:Bist du dir sicher...
War für mich dermaßen selbstverständlich, dass mein Unterbewusstsein
mir wohl vorgegaukelt hat, ich hätte das schonmal irgendwo gelesen
Lars
The only problem with troubleshooting is, that sometimes the trouble shoots back.
P4 2,6Ghz, 512MB RAM, GeForce 6200, WinXP Pro SP2, PB V3.94
The only problem with troubleshooting is, that sometimes the trouble shoots back.
P4 2,6Ghz, 512MB RAM, GeForce 6200, WinXP Pro SP2, PB V3.94
- remi_meier
- Beiträge: 1078
- Registriert: 29.08.2004 20:11
- Wohnort: Schweiz