Variables Array in Struktur

Für allgemeine Fragen zur Programmierung mit PureBasic.
Benutzeravatar
Lebostein
Beiträge: 674
Registriert: 13.09.2004 11:31
Wohnort: Erzgebirge

Variables Array in Struktur

Beitrag von Lebostein »

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?
Benutzeravatar
hardfalcon
Beiträge: 3447
Registriert: 29.08.2004 20:46

Beitrag von hardfalcon »

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. :oops:
cya
Pascal
Benutzeravatar
Lebostein
Beiträge: 674
Registriert: 13.09.2004 11:31
Wohnort: Erzgebirge

Beitrag von Lebostein »

Sowas hab ich mir schon fast gedacht....

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()
Und ich will jetzt, dass irgendwie der Inhalt der Konstante #menge bei Programmstart durch den Benutzer festgelegt werden kann.
Benutzeravatar
remi_meier
Beiträge: 1078
Registriert: 29.08.2004 20:11
Wohnort: Schweiz

Beitrag von remi_meier »

Um dynamische arrays mit dem (fast) gleichen Komfort zu benutzen:

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)
Next
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:

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
Achtung: Der Debugger erkennt so keine Übertretungen der Arraygrösse!
Benutzeravatar
Lars
Beiträge: 347
Registriert: 31.08.2004 23:53
Wohnort: Shanghai
Kontaktdaten:

Beitrag von Lars »

@remi_meier
:shock:
WOW, dass das mit PB geht wusste ich gar nicht, das ist verdammt cool :)
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
Benutzeravatar
remi_meier
Beiträge: 1078
Registriert: 29.08.2004 20:11
Wohnort: Schweiz

Beitrag von remi_meier »

Gell :D
Wollen wir mal n Thread auftun mit all den undokumentierten Features?
(!, Array() = @string, OpenComPort()?, LParam()/WParam, KeyboardMode(),...)
Wär doch mal was :wink:
Benutzeravatar
Lars
Beiträge: 347
Registriert: 31.08.2004 23:53
Wohnort: Shanghai
Kontaktdaten:

Beitrag von Lars »

remi_meier hat geschrieben:undokumentierten Features? (!, [...])
Das ist doch nicht undokumentiert für direkten Inline ASM?!
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
Benutzeravatar
remi_meier
Beiträge: 1078
Registriert: 29.08.2004 20:11
Wohnort: Schweiz

Beitrag von remi_meier »

Bist du dir sicher... :wink:
Benutzeravatar
Lars
Beiträge: 347
Registriert: 31.08.2004 23:53
Wohnort: Shanghai
Kontaktdaten:

Beitrag von Lars »

remi_meier hat geschrieben:Bist du dir sicher... :wink:
LOL, das ist ja tatsächlich undokumentiert :?
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
Benutzeravatar
remi_meier
Beiträge: 1078
Registriert: 29.08.2004 20:11
Wohnort: Schweiz

Beitrag von remi_meier »

Ging mir auch so, bis ich es im englischen Forum gelesen habe...
Ich glaub ich mach mal n Eintrag unter Code, Tipps...
Antworten