Aktuelle Zeit: 09.07.2020 10:14

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]




Ein neues Thema erstellen Auf das Thema antworten  [ 24 Beiträge ]  Gehe zu Seite 1, 2, 3  Nächste
Autor Nachricht
 Betreff des Beitrags: Wie fragt man Einzelwerte in einer List ab?
BeitragVerfasst: 19.05.2020 19:17 
Offline

Registriert: 10.04.2020 12:19
Hallo, ich habe heute das Vergnügen, mich erstmals mit List zu beschäftigen, aber die Listenwerte lassen sich dann nur an Position Null abfragen, ansonsten Fehlermeldung. Folgendes soll passieren. Bei jedem Klick erhöht sich der Wert stp um 1. Außerdem kommen bei jedem Klick immer andere ast-Werte rein, und die sollen an einer Position nach der anderen in der List gespeichert werden. Und dann vor allem aber auch schön einzeln wieder abgefragt werden können. Und wie geht das dann? Hier der Code:

Code:
 stp = stp + 1
              NewList ast.l()
              Select stp
              Case 1
              AddElement(ast())
              ast() = ast
             
              Case 2
              AddElement(ast())
              ast() = ast
             
              Case 3
              AddElement(ast())
              ast() = ast
            EndSelect


Das List-Kapitel im Handbuch habe ich ja gelesen, aber in meinem Beispiel wird die Liste Stück für Stück belegt, das ist der Unterschied. Danke für Info.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Wie fragt man Einzelwerte in einer List ab?
BeitragVerfasst: 19.05.2020 19:20 
Online
Ein Admin
Benutzeravatar

Registriert: 29.08.2004 20:20
Wohnort: Saarbrücken
Könntest du das etwas genauer erklären. Ich fürchte ich weiß noch nicht genau, was nicht klappt.

Suchst du SelectElement()?

_________________
Ubuntu Gnome 20.04 LTS x64, PureBasic 5.72 x64 (außerdem 4.41, 4.50, 4.61, 5.00, 5.10, 5.11, 5.21, 5.22, 5.30, 5.31, 5.40, 5.50, 5.60, 5.71b2)
"Die deutsche Rechtschreibung ist Freeware, du darfst sie kostenlos nutzen – Aber sie ist nicht Open Source, d. h. du darfst sie nicht verändern oder in veränderter Form veröffentlichen."


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Wie fragt man Einzelwerte in einer List ab?
BeitragVerfasst: 19.05.2020 19:25 
Offline

Registriert: 10.04.2020 12:19
Genau. Wenn ich hinschreibe

Code:
SelectElement(ast(),0)
            Debug Val(Str(ast()))


kann das abgefragt werden, aber bei jeder anderen Position, Fehlermeldung "The list doesn't have a current element".


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Wie fragt man Einzelwerte in einer List ab?
BeitragVerfasst: 19.05.2020 19:30 
Online
Ein Admin
Benutzeravatar

Registriert: 29.08.2004 20:20
Wohnort: Saarbrücken
Aus deinem Code-Schnipsel ist auch nicht ersichtlich, dass du mehr als ein Element hinzufügst.
Wenn dir ListSize(ast()) nur 1 zurückgibt, dann geht auch nur SelectElement(ast(), 0) und kein anderer Index.

Zeig uns mal einen kompletten Code, damit man besser versteht, was du eigentlich machst.

_________________
Ubuntu Gnome 20.04 LTS x64, PureBasic 5.72 x64 (außerdem 4.41, 4.50, 4.61, 5.00, 5.10, 5.11, 5.21, 5.22, 5.30, 5.31, 5.40, 5.50, 5.60, 5.71b2)
"Die deutsche Rechtschreibung ist Freeware, du darfst sie kostenlos nutzen – Aber sie ist nicht Open Source, d. h. du darfst sie nicht verändern oder in veränderter Form veröffentlichen."


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Wie fragt man Einzelwerte in einer List ab?
BeitragVerfasst: 19.05.2020 19:39 
Offline
Benutzeravatar

Registriert: 24.11.2004 13:12
Wohnort: Germany
Ich glaube ein Array (Dim) passt da besser. Habe meine Kristall Kugel gefragt

_________________
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul / OPC-Helper DLL
PB v3.30 / v5.4x - OS Mac Mini OSX 10.xx / Window 10 Pro. (X64) /Window 7 Pro. (X64) / Window XP Pro. (X86) / Ubuntu 14.04
Downloads auf My Webspace


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Wie fragt man Einzelwerte in einer List ab?
BeitragVerfasst: 19.05.2020 19:43 
Offline

Registriert: 10.04.2020 12:19
Der komplette Code ist viel zu lang und um den soll es auch gar nicht gehen. Ich habe dann die ganze List-Geschichte überhaupt erst gar nicht kappiert.

Nochmal kurz gesagt: Die Anzahl der Klicks wird gezählt und zu jedem Klick 1,2,3,4,5 usw. soll ein sich ändernder Wert an einem List-Platz nach dem anderen gespeichert werden, das können jetzt irgendwelche Zufallswerte sein, völlig egal. Und wenn dann z.B. 8 Werte in der Liste gespeichert sind, sollen die auch wieder abgefragt werden können. Sicher könnte man das auch mit einem Array machen, aber auch das kappiere ich nicht im Handbuch. Mir kann also auch gerne mal jemand erklären, wie meine obige Aufgabenstallung mit einem Array zu packen wäre, Hauptsache, ich kappiere wenigstens mal eins von beidem, entweder List oder Array. Danke.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Wie fragt man Einzelwerte in einer List ab?
BeitragVerfasst: 19.05.2020 20:01 
Offline
Moderator
Benutzeravatar

Registriert: 15.06.2008 18:22
Wohnort: Dresden
zum Vergleichen...

Code:
EnableExplicit

Define.i iEvent,
         i
Define NewList Klicks.i()

If OpenWindow(0, 0, 0, 300, 300, "", #PB_Window_ScreenCentered)
  ButtonGadget(0, 5, 5, 100, 25, "Klick")
  ButtonGadget(1, 5, 35, 100, 25, "Abfrage")
  ButtonGadget(2, 5, 65, 100, 25, "Abfrage anders")
EndIf

Repeat
  iEvent = WaitWindowEvent()
 
  Select iEvent
    Case #PB_Event_Gadget
      Select EventGadget()
       
        Case 0
          AddElement(Klicks())
          Klicks() = Random(500, 0)
       
        Case 1
          ForEach Klicks()
            Debug "Klick Nr. " + ListIndex(Klicks()) + " erzeugte die Zufallszahl " + Str(Klicks())
          Next
         
        Case 2
          For i = 0 To ListSize(Klicks()) - 1
            SelectElement(Klicks(), i)
            Debug "Klick Nr. " + Str(i) + " erzeugte die Zufallszahl " + Str(Klicks())
          Next i
       
      EndSelect
   
  EndSelect
 
Until iEvent = #PB_Event_CloseWindow

CloseWindow(0)

_________________
Win10 x64 | PB 5.71 (x86 und x64)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Wie fragt man Einzelwerte in einer List ab?
BeitragVerfasst: 19.05.2020 20:05 
Offline

Registriert: 10.04.2020 12:19
Den ursprünglichen Beitrag habe ich wieder entfernt.


Zuletzt geändert von Re57 am 20.05.2020 09:38, insgesamt 1-mal geändert.

Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Wie fragt man Einzelwerte in einer List ab?
BeitragVerfasst: 19.05.2020 20:18 
Offline
Benutzeravatar

Registriert: 25.09.2016 01:42
Array Beispiel:
Code:
EnableExplicit

Structure COLLECT_STRUCT
  count.i
  Array item.i(127)
EndStructure

Global collect.COLLECT_STRUCT
Global index.i
Global element.i

Procedure.i ListAdd(*collect.COLLECT_STRUCT,Item.i)
  Protected siz.i
  With *collect
    If \count = (ArraySize(\item()) + 1)
      siz = \count + 128
      ReDim \item(siz)
      If ArraySize(\item()) = siz
        \item(\count) = Item
        \count + 1
        ProcedureReturn #True
      Else
        ProcedureReturn #False 
      EndIf     
    Else
      \item(\count) = Item
      \count + 1
      ProcedureReturn #True
    EndIf
  EndWith
EndProcedure

Procedure.i ListElement(*collect.COLLECT_STRUCT,Index.i,*Result.Integer)
  With  *collect
    If Index > -1 And Index < \count
      *Result\i = \item(Index)
      ProcedureReturn #True
    Else
      ProcedureReturn #False
    EndIf
  EndWith
EndProcedure

For index = 0 To 1000
  If Not ListAdd(@collect,index)
    MessageRequester(#Null$,"Error: Not enough memory!")
    End
  EndIf
Next

If ListElement(@collect,12,@element);get the element @ index 12
  Debug element
EndIf

End

_________________

Links:
PureBasic Discord
[INCLUDE] GLFW 3.3 Library
[MODULE] Bass Library 2.4 (Win)
[LIBRARY] Hexi Binary2Hex (Win)



Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Wie fragt man Einzelwerte in einer List ab?
BeitragVerfasst: 19.05.2020 20:41 
Offline

Registriert: 10.04.2020 12:19
Vielen Dank für die beiden Codes, aber leider nutzen die mir beide nichts. Prozeduren gehen ja nicht in Repeat-Schleifen und außerdem habe ich mit Prozeduren auch noch nie gearbeitet. Solange es keine einfache Möglichkeit gibt, Arrays oder Listen erstellen und dann auch wieder abfragen zu können, kann ich darauf verzichten. Oder das Handbuch wird da endlich mal gescheit aufbereitet. Da ist wahrscheinlich bei den Erklärungen für List und Array null etwas nachbereitet worden seit PureBasic 4.00 Zeiten oder noch früher, das ist so schlichtweg nicht anbietbar.


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 24 Beiträge ]  Gehe zu Seite 1, 2, 3  Nächste

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 11 Gäste


Sie dürfen keine neuen Themen in diesem Forum erstellen.
Sie dürfen keine Antworten zu Themen in diesem Forum erstellen.
Sie dürfen Ihre Beiträge in diesem Forum nicht ändern.
Sie dürfen Ihre Beiträge in diesem Forum nicht löschen.

Suche nach:
Gehe zu:  

 


Powered by phpBB © 2008 phpBB Group | Deutsche Übersetzung durch phpBB.de
subSilver+ theme by Canver Software, sponsor Sanal Modifiye