Aktuelle Zeit: 24.09.2020 17:08

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]




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

Registriert: 01.04.2007 20:18
Re57 hat geschrieben:
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.


Dann solltest du eventuell mal nicht nur die einzelnen Seiten "überfliegen", sondern Stück für Stück abarbeiten. Es sind diverse Beispiele dabei.
Prozedure gehen nicht in Repeat Schleifen.... Lustiger Satz.... Es werden Prozeduren dort aufgerufen, nicht erstellt...
Eventuell solltest du das Anfänger-Kapitel nicht einfach so überspringen....
Die Hilfe ist eigentlich auch für "nicht Programmierer" nachvollziehbar. Aber nur wenn man sie auch liest !

Liste erstellen : NewList
Listenelement hinzufügen : AddElement()
Listen Iteration : ForEach Next

usw....

_________________
PureBasic 5.72 LTS (Windows x86/x64) | Windows10 Pro x64 | Z370 Extreme4 | i7 8770k | 64GB RAM | iChill GeForce RTX 2080 Super | HAF XF Evo​​


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

Registriert: 25.09.2016 01:42
Also entweder sind alle Antworten falsch oder ich versteh das Problem nicht :coderselixir:
Evtl. hilft eine erneute Schilderung des Problems.

_________________

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 22:53 
Offline

Registriert: 10.04.2020 12:19
Danke für die weiteren Hinweise. Ich stelle jetzt mal einen kleinen Code hier ein, wobei einfach nur auf eine schwarze Fläche geklickt wird und dann werden Zufallswerte in die List eingetragen. Zum Schluß werden die dann über ForEach()-Next wieder abgerufen. OK, aber wie kann ich denn nun ganz gezielt z.B. nur den zweiten Eintrag in der List anzeigen lassen? Genau um diese Möglichkeit geht es mir. Jeden beliebigen Wert in der List möchte ich gerne separat abfragen können. Danke.

Code:
#Window1 = 1
#Flags = #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_ScreenCentered

If InitSprite() = 0
  MessageRequester("InitSprite fehlgeschlagen", "Programm endet")
EndIf 

If InitMouse() = 0
  MessageRequester("InitMouse fehlgeschlagen", "Programm endet")
EndIf

If OpenWindow(1,0,0,800,412,"",#Flags) = 0
  MessageRequester("OpenWindow fehlgeschlagen", "Programm endet")
EndIf

If OpenWindowedScreen(WindowID(1),0,0,800,412) = 0
  MessageRequester("OpenWindowedScreen fehlgeschlagen", "Programm endet")
EndIf

Repeat
  ExamineMouse() : ReleaseMouse(#True)
  event = WaitWindowEvent()
 
  Select Event   
    Case #PB_Event_CloseWindow
    schliessen = 1
  EndSelect



  NewList List.i()
 
  If event = #WM_LBUTTONDOWN
    stp = stp + 1
    random = Random(9)
   
    Select stp
      Case 1
        AddElement(List())
        List() = random
      Case 2
        AddElement(List())
        List() = random
      Case 3
        AddElement(List())
        List() = random
    EndSelect
  EndIf
 
  ForEach List()
    Debug (List())
  Next



Until schliessen = 1
End


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

Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9
kleiner Tipp: Mit NewList() erstellst Du eine neue Liste.

_________________
Schrödingers Smiley :):


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Wie fragt man Einzelwerte in einer List ab?
BeitragVerfasst: 20.05.2020 00:13 
Offline
Benutzeravatar

Registriert: 25.09.2016 01:42
Re57 hat geschrieben:
... aber wie kann ich denn nun ganz gezielt z.B. nur den zweiten Eintrag in der List anzeigen lassen? ...


Mit SelectElement() wenn es eine Liste ist oder über den Array Index wenn es ein Array ist.

_________________

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: 20.05.2020 00:35 
Offline
Ein Admin
Benutzeravatar

Registriert: 29.08.2004 20:20
Wohnort: Saarbrücken
Von welchem Handbuch sprichst du eigentlich? Meinst du die Purebasic-Hilfe damit?

Kiffi hat dir einen wichtigen Tipp gegeben. Wenn du in deiner Hauptschleife immer wieder NewList schreibst, dann wird sie jedes mal auch wieder geleert.
Hier ein Beispiel.
Falsch:
Code:
For i = 1 To 10
   NewList b()
   AddElement(b())
   b() = i
   Debug "Zeige Liste"
   ForEach b()
      Debug b()
   Next
Next

Richtig:
Code:
NewList b()
For i = 1 To 10
   
   AddElement(b())
   b() = i
   Debug "Zeige Liste"
   ForEach b()
      Debug b()
   Next
Next

_________________
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: 20.05.2020 10:01 
Offline

Registriert: 10.04.2020 12:19
Daß NewList() die Liste leert, war in der Tat ein ganz wichtiger Tipp und mittlerweile habe ich jetzt verstanden, wie man die Liste mit SelectElement() abfragt. Danke nachmals an alle! Ich stelle jetzt mal meinen aktualisierten Code hier ein:

Code:
#Flags = #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_ScreenCentered

If InitSprite() = 0
  MessageRequester("InitSprite fehlgeschlagen", "Programm endet")
EndIf 

If InitMouse() = 0
  MessageRequester("InitMouse fehlgeschlagen", "Programm endet")
EndIf

If OpenWindow(1,0,0,800,412,"",#Flags) = 0
  MessageRequester("OpenWindow fehlgeschlagen", "Programm endet")
EndIf

If OpenWindowedScreen(WindowID(1),0,0,800,412) = 0
  MessageRequester("OpenWindowedScreen fehlgeschlagen", "Programm endet")
EndIf


NewList List.i()

Repeat
  ExamineMouse() : ReleaseMouse(#True)
  event = WaitWindowEvent()
 
  Select Event   
    Case #PB_Event_CloseWindow
    schliessen = 1
   
    Case #WM_LBUTTONDOWN
    kl = 1
  EndSelect
 
 
    If event = #WM_LBUTTONDOWN And kl = 1
      kl = 0
      stp = stp + 1
      a = a + 10
     
        Select stp
          Case 1
            AddElement(List())
            List() = a
          Case 2
            AddElement(List())
            List() = a
          Case 3
            AddElement(List())
            List() = a
          Case 4
            AddElement(List())
            List() = a
          Case 5
            AddElement(List())
            List() = a
        EndSelect

        If stp <= 5
          SelectElement(List(),stp-1)
          Debug (List())
        EndIf
    EndIf
 
   
Until schliessen = 1
End


Ich habe aber jetzt trotzdem noch eine weitere Frage:
Wie kommt es, daß die Werte nach jedem klicken so langsam kommen, wenn die Maus immer auf derselben Position bleibt, während sie ungleich schneller kommen, wenn man die Maus beim Klicken zugleich bewegt? Und wie kann man erreichen, daß das auch bei unbewegter Maus wesentlich schneller geht?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Wie fragt man Einzelwerte in einer List ab?
BeitragVerfasst: 20.05.2020 11:24 
Offline
Ein Admin
Benutzeravatar

Registriert: 29.08.2004 20:20
Wohnort: Saarbrücken
Das liegt daran, dass deine Hauptschleife nicht korrekt geschrieben ist. Außerdem mischst du Window-Events mit Screen-Events, was eh schon fragwürdig ist. Es gibt auch keinen Grund die Windows-Konstanten #WM_LBUTTONDOWN zu nutzen, wenn es dafür Purebasic-eigene Konstanten wie #PB_Event_LeftClick gibt.

Ich vermute du hast deinen Code aus irgendeinem uralten Tutorial oder Handbuch, was veraltete Konstrukte nutzt. Außerdem machst du zuerst ein InitMouse() und ExamineMouse(), nutzt es aber gar nicht, weil du die Maus direkt wieder mit ReleaseMouse(#True) freigibst, damit du die Klicks auch als Events kriegst.

Also entweder du nutzt ausschließlich ExamineMouse(), MouseX(), MouseButton() und Co aus der Mouse-Library oder du nutzt ausschließlich das Event-System mit WindowMouseX() und WindowMouseY().

_________________
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: 20.05.2020 14:20 
Offline

Registriert: 10.04.2020 12:19
Von #PB_Event_LeftClick wußte ich bisher noch gar nichts, aber das werde ich natürlich genauso im Auge behalten wie deine weiteren Erklärungen. Im Moment habe ich zwar keine Zeit, mich damit zu beschäftigen, aber das kommt noch heute bei mir auf die Agenda. Evtl. merkt man mir ja an, daß meine PureBasic-Kenntnisse aus PB 4.00 Zeiten kommen und natürlich hat sich seitdem viel verändert. Eine Ausbildung zum Programmier hatte ich nicht, da ist es kaum zu vermeiden, daß mal Schwierigkeiten auftauchen. Auf jeden Fall vielen Dank für Deine Anregungen, ich hoffe, daß ich das später dann umsetzen kann.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Wie fragt man Einzelwerte in einer List ab?
BeitragVerfasst: 20.05.2020 14:38 
Offline
Ein Admin
Benutzeravatar

Registriert: 29.08.2004 20:20
Wohnort: Saarbrücken
Es hilft auch immer sehr zu wissen, was dein eigentliches Ziel ist. Nicht selten ist man auf dem falschen Weg zum Ziel, ohne es zu bemerken. Ich will dir auch gar nichts unterstellen, aber mehr Informationen helfen laut meiner Erfahrung trotzdem, ein Problem wesentlich schneller zu lösen.

_________________
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  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 24 Beiträge ]  Gehe zu Seite Vorherige  1, 2, 3  Nächste

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 9 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:  
cron

 


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