Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
jb
Anmeldungsdatum: 14.01.2005 Beiträge: 2010
|
Verfasst am: 07.11.2006, 16:54 Titel: Arrays variabler Größe in Type-Strukturen |
|
|
In TYPEs kann man ja für gewöhnlich keine dynamischen Array anlegen. Also liegt ja die Verwendung von Pointern nahe.
Bei einem INTEGER-Feld also:
Code: | type IntData
Length as integer
Ort as integer ptr
end type
|
Und dann irgendwie mit
Code: | dim as integer Feld(2)
dim as IntData Daten
Daten.Length = 3
Daten.Ort = @Feld(0)
|
Aber jetzt? Wie greife ich jetzt, sobald ich den Pointer erstellt habe, mit ihm auf das Feld zu?
Danke im Voraus,
jb _________________ Elektronik und Programmieren |
|
Nach oben |
|
|
Michael712 aka anfänger, programmierer
Anmeldungsdatum: 26.03.2005 Beiträge: 1593
|
Verfasst am: 07.11.2006, 17:01 Titel: |
|
|
Das geht fast genauso wie bei normalen Arrays:
Code: | type IntData
Length as integer
Ort as integer ptr
end type
dim as integer Feld(2), i
dim as IntData Daten
Daten.Length = 3
Daten.Ort = @Feld(0)
Daten.Ort[0]=123
Daten.Ort[1]=456
Daten.Ort[2]=789
For i = 0 to 2
Print Daten.Ort[i]
Next i |
Wie du siehst, musst du nur eine eckige Klammern ( '[]' statt '()' ) verwenden _________________
Code: | #include "signatur.bi" |
|
|
Nach oben |
|
|
jb
Anmeldungsdatum: 14.01.2005 Beiträge: 2010
|
|
Nach oben |
|
|
Michael712 aka anfänger, programmierer
Anmeldungsdatum: 26.03.2005 Beiträge: 1593
|
Verfasst am: 07.11.2006, 17:58 Titel: |
|
|
Normalerweise macht man das aber anders.
Du erstellst ein Array, doch meißtens alloziert man einfach den gewünschten speicherbereich:
Code: | type IntData
Length as integer
Ort as integer ptr
end type
dim as integer i
dim as IntData Daten
Daten.Length = 3
Daten.Ort = callocate(3) 'man kann auch allocate verwenden, dann wird allerdings der Speicherinhalt NICHT auf 0 gesetzt
Daten.Ort[0]=123
Daten.Ort[1]=456
Daten.Ort[2]=789
For i = 0 to 2
Print Daten.Ort[i]
Next i |
So muss man nicht erst ein Array erstellen. _________________
Code: | #include "signatur.bi" |
|
|
Nach oben |
|
|
jb
Anmeldungsdatum: 14.01.2005 Beiträge: 2010
|
Verfasst am: 07.11.2006, 18:03 Titel: |
|
|
Na wer sagt's denn. Da hab ich endlich mal wieder was Nützliches gelernt
Danke nochmals
jb _________________ Elektronik und Programmieren |
|
Nach oben |
|
|
Dusky_Joe
Anmeldungsdatum: 07.01.2005 Beiträge: 1007 Wohnort: Regensburg/Oberpfalz
|
Verfasst am: 10.11.2006, 17:23 Titel: |
|
|
Sieh dir am besten auch die entsprechenden Referenz-Einträge der Ref an. Das wäre hauptsächl.
http://www.freebasic.de/r.php?s=ALLOCATE
http://www.freebasic.de/r.php?s=PTR
aber auch die Links, die von dort weiter weisen.
In der CHM-Version kannst du auch das Kapitel "Eckige Klammern" ansehen, ich glaube, da steht auch noch die eine oder andere nützliche Passage.
Have a nice day
Ciao _________________ fully biological degradable
Once, the big wave arrives, you've got two ways, you can go:
Either, you ride it, or you don't do.
But, if you don't ride, you'll never know wether you'd have gone wet. |
|
Nach oben |
|
|
|