anzahl von einträgen in Strukturierten Array ermitteln!?

Für allgemeine Fragen zur Programmierung mit PureBasic.
Benutzeravatar
inti
Beiträge: 90
Registriert: 01.02.2006 17:25

anzahl von einträgen in Strukturierten Array ermitteln!?

Beitrag von inti »

folgendes problem:
ich habe eine struktur zb.

Code: Alles auswählen

  Structure Person
    Name.s
    ForName.s 
    Age.w 
  EndStructure
die ich gern dynamisch anpassen möchte (über 'redim') wenn einträge gelöscht oder hinzugefügt werden... das hängt mit der ausgabe/anzeige, sortierung usw zusammen... gibt es eine möglichkeit die anzahl der einträge zu ermitteln ohne mitzuzählen?
Zuletzt geändert von inti am 17.03.2009 15:55, insgesamt 1-mal geändert.
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

über ReDim kannst du die Größen von Arrays Ändern, nicht von Strukturen.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
KeyKon
Beiträge: 1412
Registriert: 10.09.2004 20:51
Computerausstattung: Laptop: i5 2,8 Ghz, 16GB DDR3 RAM, GeForce 555GT 2GB VRAM
PC: i7 4,3 Ghz, 32GB DDR3 RAM, GeForce 680 GTX 4GB VRAM
Win10 x64 Home/Prof
PB 5.30 (64bit)
Wohnort: Ansbach
Kontaktdaten:

Beitrag von KeyKon »

Du willst Einträge in der Struktur löschen oder Hinzufügen? Oder meinst du ein Array mit Struktur? Wen dem so ist und du Einträge löschen willst wäre eine LinkedList ohnehin besser...
Ich würde es einfach in einer extra Variabel mitloggen wenn es keine einfachere Lösung gibt...


PS: ForName sieht echt böse aus^^
(\/) (°,,,°) (\/)
Benutzeravatar
inti
Beiträge: 90
Registriert: 01.02.2006 17:25

Beitrag von inti »

ok, ich war etwas ungenau, sorry! :-(
ich würde gern über SortStructuredArray() eine art datenbank realisieren:

der anfang schaut folgendermaßen aus:

Code: Alles auswählen

  Structure INHALT
    null$
    eins$
    zwei$
    drei$
    vier$
    fuenf$
  EndStructure
  Global Dim SORTL.INHALT(0)
beim laden der datenbank wird die anzahl der Einträge bestimmt und mit

Code: Alles auswählen

ReDim SORTL.INHALT(ANZAHL_DER_EINTRÄGE)

angepasst - funtioniert alles soweit. ich habe das so gelößt weil ich die funktion 'SortStructuredArray' nutzen will.
bisher habe ich die 'datenbank' über ein ListIconGadget angezeigt, änderungen dort vorgenommen (ADD/DEL/EDIT) und zurückgeschrieben... nun bin ich an dem punkt wo ich das mal 'rückwärts' brauche und dazu muss ich irgendwie ermitteln wieviel einträge in diesem StructuredArray sind! :shock:

eventuell gehe ich das ganze ja auch gaaaaaaaaanz falsch an und ihr habt eine bessere lösung? ...vor allem wegen dem SORT der unterschiedlichen 'spalten'...
Benutzeravatar
KeyKon
Beiträge: 1412
Registriert: 10.09.2004 20:51
Computerausstattung: Laptop: i5 2,8 Ghz, 16GB DDR3 RAM, GeForce 555GT 2GB VRAM
PC: i7 4,3 Ghz, 32GB DDR3 RAM, GeForce 680 GTX 4GB VRAM
Win10 x64 Home/Prof
PB 5.30 (64bit)
Wohnort: Ansbach
Kontaktdaten:

Beitrag von KeyKon »

Lads in ne LinkedList und sortier mit SortStructuredList()

Wo dein eigentliches Problem liegt is mir immernoch nich so ganz klargeworden^^
(\/) (°,,,°) (\/)
Benutzeravatar
inti
Beiträge: 90
Registriert: 01.02.2006 17:25

Beitrag von inti »

du kannst auch gross schrieben! ;-)

ich hatte das erst über eine linkedlist versucht aber irgendwie nicht hinbekommen! :oops:
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

änder aber trotzdem mal den Titel, du willst ja nicht die Anzahl Einträge in einer Struktur wissen,
sondern in einem Strukturierten Array.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
KeyKon
Beiträge: 1412
Registriert: 10.09.2004 20:51
Computerausstattung: Laptop: i5 2,8 Ghz, 16GB DDR3 RAM, GeForce 555GT 2GB VRAM
PC: i7 4,3 Ghz, 32GB DDR3 RAM, GeForce 680 GTX 4GB VRAM
Win10 x64 Home/Prof
PB 5.30 (64bit)
Wohnort: Ansbach
Kontaktdaten:

Beitrag von KeyKon »

Ich würde es mit ner LinkedList machen weil man sich da einfach Elemente einfügen und rauslöschen kann, und keinen Umweg über n ListIconGadget nehmen muss, wozu genau brauchst du denn jetz die Anzahl? und wiso loggst du das nich einfach in eine extra Variable?
(\/) (°,,,°) (\/)
pickelrobert
Beiträge: 207
Registriert: 09.12.2004 22:09

Beitrag von pickelrobert »

Probier's mal mit ArraySize()

Code: Alles auswählen

Structure Person
    Name.s
    Alter.w
EndStructure
Dim test.person(2)

test(0)\name="meyer"
test(0)\alter=18
test(1)\name="schulze"
test(1)\alter=25
test(2)\name="schmidt"
test(2)\alter=7

bis.w=ArraySize(test())

For i.w=0 To bis
    Debug test(i)\name+","+Str(test(i)\alter)
Next

ReDim test.person(1)

bis.w=ArraySize(test())

For i.w=0 To bis
    Debug test(i)\name+","+Str(test(i)\alter)
Next

Benutzeravatar
hjbremer
Beiträge: 822
Registriert: 27.02.2006 22:30
Computerausstattung: von gestern
Wohnort: Neumünster

Beitrag von hjbremer »

Meine persönliche Meinung: Daten in einem Listicongadget sollten nicht parallel in einem Array, welcher Art auch immer, verwaltet werden. Es ist nicht schneller, im Gegenteil und erhöht den Verwaltungsaufwand erheblich.
Zuletzt geändert von hjbremer am 18.03.2009 18:47, insgesamt 1-mal geändert.
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
Antworten