Maus "feuert" mehrfach

Anfängerfragen zum Programmieren mit PureBasic.
bin_neu_hier
Beiträge: 105
Registriert: 06.03.2019 21:52

Maus "feuert" mehrfach

Beitrag von bin_neu_hier »

Hallo da Draußen!

Habe folgendes Problem: In der Eventschleife wird ein Button abgefragt. Wenn 2 Bedingungen erfüllt werden, wird ein Archiv eines Verzeichnisses gepackt, im Dateinamen mit Zeitstempel.

Entweder liegts an der billigen Maus oder an mir, dass das Archiv meistens mehrfach erstellt wird. Der Button wird scheinbar mehrfach betätigt. Wenn's nicht an der billigen Maus läge, wie kann man "mehrfaches auslösen" verhindern? Ich könnte beispielsweise die 2 o. g. Bedingungen sofort ändern, so dass beim 2. Durchlauf die Sache stoppen müsste, aber vielleicht gibt's ja noch was eleganteres?
Bin mit 21 erstmals mit Computern in Kontakt gekommen und konnte mich daher in meiner Jugend ganz auf den Alkohol konzentrieren. Bin nun seit fast 40 Jahren programmiertechnisch konstant auf Anfänger-Level, konnte jedoch beim Thema Alkohol eine gewisse Virtuosität erreichen.
Irgendwas muss man ja gut können.
Benutzeravatar
TroaX
Beiträge: 660
Registriert: 08.03.2013 14:27
Computerausstattung: PC: Ryzen 9 3950X, 96 GB RAM, RX6800XT, 2.5 TB SSD, 21:9 Display, Pop_OS! | Lappi: Ryzen 7 5800H, 16 GB RAM, 1 TB SSD, Pop_OS!
Wohnort: NRW
Kontaktdaten:

Re: Maus "feuert" mehrfach

Beitrag von TroaX »

Welches Event fragst du denn genau ab?
PC: Ryzen 9 3950X | 96 GB RAM | RX6800XT | 2,5 TB NVMe | Pop_OS!
Notebook: 16" 3:2 | Ryzen 7 5800H | 16 GB RAM | Radeon Vega | 1TB NVMe | Pop_OS!
NAS: Fritz.Box :lol:
Coding: Purebasic 6.04 | PHP | HTML | CSS | Javascript
bin_neu_hier
Beiträge: 105
Registriert: 06.03.2019 21:52

Re: Maus "feuert" mehrfach

Beitrag von bin_neu_hier »

Hier ein Auszug aus der Eventschleife

Code: Alles auswählen

 Select EventGadget()
      
    Case qpb
      SetGadgetText(qpsg,PathRequester("Wählen Sie einen Quellpfad aus", GetUserDirectory(#PB_Directory_Documents)))
      If GetGadgetText(qpsg) <> ""
        ClearList(dateiliste$())
        findfiles (GetGadgetText(qpsg))
        ResetList(dateiliste$())
        While NextElement(dateiliste$())
          If FindString(dateiliste$(), "locked_",#PB_String_NoCase) > 0
            DeleteElement(dateiliste$() ,1)
          EndIf
        Wend
        ResetList(dateiliste$())
        i = ListSize(dateiliste$())
        Select i
          Case 1
            SetGadgetText(spsg, Str(i) + " Eintrag gefunden")
          Case 0
            SetGadgetText(spsg, "keinen Eintrag gefunden")
          Default
            SetGadgetText(spsg, Str(i) + " Einträge gefunden")
        EndSelect
      Else
        SetGadgetText(spsg, "Status ...")
      EndIf
      
    Case tpb
      SetGadgetText(tpsg,PathRequester("Wählen Sie einen Zielpfad aus", GetUserDirectory(#PB_Directory_Documents)))
      
    Case spb
      If GetGadgetText(qpsg) <> "" And GetGadgetText(tpsg) <> ""
        If ListSize(dateiliste$()) > 0
          ziplist(GetGadgetText(tpsg),GetGadgetText(qpsg))
          i = ListSize(dateiliste$())
          Select i
            Case 1
              SetGadgetText(spsg, Str(i) + " Datei archiviert.")
            Default
              SetGadgetText(spsg, Str(i) + " Dateien archiviert.")
          EndSelect
        Else
          SetGadgetText(spsg, "Keine Dateien zum Archivieren gefunden")
        EndIf
      EndIf
      
  EndSelect
bei "case spb" passierts dann ..
Bin mit 21 erstmals mit Computern in Kontakt gekommen und konnte mich daher in meiner Jugend ganz auf den Alkohol konzentrieren. Bin nun seit fast 40 Jahren programmiertechnisch konstant auf Anfänger-Level, konnte jedoch beim Thema Alkohol eine gewisse Virtuosität erreichen.
Irgendwas muss man ja gut können.
Benutzeravatar
TroaX
Beiträge: 660
Registriert: 08.03.2013 14:27
Computerausstattung: PC: Ryzen 9 3950X, 96 GB RAM, RX6800XT, 2.5 TB SSD, 21:9 Display, Pop_OS! | Lappi: Ryzen 7 5800H, 16 GB RAM, 1 TB SSD, Pop_OS!
Wohnort: NRW
Kontaktdaten:

Re: Maus "feuert" mehrfach

Beitrag von TroaX »

Wenn ich das richtig sehe, fragst du nur das Gadget ab, welches ein Event feuert. Aber nicht welches Event gefeuert wird. Nahezu jeder Gadgettyp besitzt mehr als ein Event. Ich würde immer das Event genauestens definieren.

Außerdem arbeite bitte bei Variablen nicht mit absoluten Abkürzungen. Was soll spb sein?
PC: Ryzen 9 3950X | 96 GB RAM | RX6800XT | 2,5 TB NVMe | Pop_OS!
Notebook: 16" 3:2 | Ryzen 7 5800H | 16 GB RAM | Radeon Vega | 1TB NVMe | Pop_OS!
NAS: Fritz.Box :lol:
Coding: Purebasic 6.04 | PHP | HTML | CSS | Javascript
Antworten