Seite 1 von 1

Maus "feuert" mehrfach

Verfasst: 18.06.2022 19:07
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?

Re: Maus "feuert" mehrfach

Verfasst: 18.06.2022 20:21
von TroaX
Welches Event fragst du denn genau ab?

Re: Maus "feuert" mehrfach

Verfasst: 18.06.2022 20:57
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 ..

Re: Maus "feuert" mehrfach

Verfasst: 19.06.2022 06:11
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?