Liste in Map >_<

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Bobo-Jack
Beiträge: 26
Registriert: 08.09.2010 11:59

Liste in Map >_<

Beitrag von Bobo-Jack »

Zeit für ein absolutes Anfängerprblem:

Für mein Programm brauche ich eine Map (Geschwindigkeit beim Zugriff) bei der jedes Map Element eine Strukturierte Liste ist. Lösung sieht so aus:

Code: Alles auswählen

    Structure GroupMember
      Name.s         
      Password.s
      InfluenceArea.s
    EndStructure
   
    Structure Group
      List Members.GroupMember()
    EndStructure
    
    NewMap Groups.Group()
    
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

    AddMapElement(Groups(), "UserGroup")
     AddElement(Groups()\Members())
      Groups("UserGroup")\Members()\Name.s          = "Admin"
      Groups("UserGroup")\Members()\InfluenceArea.s = "Desktop"
      Groups("UserGroup")\Members()\Password.s      = "Blume"
     AddElement(Groups()\Members())
      Groups("UserGroup")\Members()\Name.s          = "Fun"
      Groups("UserGroup")\Members()\InfluenceArea.s = "Games Folder"
      Groups("UserGroup")\Members()\Password.s      = "pwrd"
     
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

    Key$         = "UserGroup"
    GroupElement = 2
    
    SelectElement(Groups(Key$)\Members(), GroupElement)
    
    Debug "Group Member: "+Groups(Key$)\Members()\Name.s
    Debug "Influence: "   +Groups(Key$)\Members()\InfluenceArea.s
    Debug "Password: "    +Groups(Key$)\Members()\Password.s
Wer den Code ausführt wird 'The list doesn't have a current element' erhalten. Egal, wie ich veruche, an die Daten ranzukommen.
Wenn man die Zeile mit SelectElement weglässt wird das erste Listenelement genommen. :?

Bin echt geschpannt wie die Lösung aussieht <)
DarkDragon
Beiträge: 6291
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

Re: Liste in Map >_<

Beitrag von DarkDragon »

Du hast den Listenindex von 2 genommen, aber es gibt nur 2 Elemente, also bist du 1 drüber hinaus:

Code: Alles auswählen

    Structure GroupMember
      Name.s         
      Password.s
      InfluenceArea.s
    EndStructure
   
    Structure Group
      List Members.GroupMember()
    EndStructure
   
    NewMap Groups.Group()
   
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

    AddMapElement(Groups(), "UserGroup")
     AddElement(Groups()\Members())
      Groups()\Members()\Name.s          = "Admin"
      Groups()\Members()\InfluenceArea.s = "Desktop"
      Groups()\Members()\Password.s      = "Blume"
     AddElement(Groups()\Members())
      Groups()\Members()\Name.s          = "Fun"
      Groups()\Members()\InfluenceArea.s = "Games Folder"
      Groups()\Members()\Password.s      = "pwrd"
     
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

    Key$         = "UserGroup"
    GroupElement = 1
   
    SelectElement(Groups(Key$)\Members(), GroupElement)
   
    Debug "Group Member: "+Groups(Key$)\Members()\Name.s
    Debug "Influence: "   +Groups(Key$)\Members()\InfluenceArea.s
    Debug "Password: "    +Groups(Key$)\Members()\Password.s
Zuletzt geändert von DarkDragon am 08.09.2010 12:56, insgesamt 1-mal geändert.
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7031
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: Liste in Map >_<

Beitrag von STARGÅTE »

PureBasic Hilfe hat geschrieben: SelectElement(LinkedList(), Position)

[...] Das erste Element befindet sich an Position 0, das nächste an 1 und so weiter. [...]
Element 2 existiert bei dir nicht, damit gibt es nach SelectElement kein aktuellen Element!

Du hast nur Element 0 und Element 1 ...

Das ab 0 gezählt wird, trifft auf viele Dinge in Purebasic und andere Sprachen zu!

BTW: Willkommen im Forum
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Benutzeravatar
Bobo-Jack
Beiträge: 26
Registriert: 08.09.2010 11:59

Gelöst

Beitrag von Bobo-Jack »

Danke schön!
Das wars, ich wusste nicht dass der Index bei 0 anfängt und nicht bei 1.
Cool dass hier so schnell geantwortet wird :D

( Ich fasses nicht das schreibt man tausende Zeilen Code und dann läufts nicht wegen einer Zahl >_< )
Antworten