Texte innerhalb einer Schleife anzeigen und String einlesen

Anfängerfragen zum Programmieren mit PureBasic.
Sommertv
Beiträge: 68
Registriert: 26.04.2019 10:31
Computerausstattung: Lenovo W500, Debian Stable, Purebasic 5.70 (momentan die Testversion)
Wohnort: Mühldorf am Inn

Texte innerhalb einer Schleife anzeigen und String einlesen

Beitrag von Sommertv »

Hallo an die Gemeinde,
ich arbeite fast ausschliesslich mit Linux und hab viele kleine Progrämmchen in XBasic geschrieben.
Leider funktioniert der Compiler nicht auf einer 64 Bit Plattform und mit einem Wrapper zu arbeiten ist net das wahre.
Gambas ist zwar recht und schön, nur muss hier die Umgebung installiert sein und Standalone Programme sind auch nicht möglich.

Mein erstes PB Projekt hab ich nahezu 1:1 von XBasic übernommen, es ist eine Oberfläche für youtube-dl
Vielleicht kann jemand einen Blick drüber werfen, denn das Programm verhält sich an mehreren Stellen nicht wie es sollte.
SetGadgetText(#LabAdr) sollte an mehreren Stellen unterschiedliche Texte ausgehen, das funktioniert nicht innerhalb der Schleife, warum k.A.
Ausserdem wollte ich den Rückgabestring (Titel des Videos, Interpret) von youtube-dl auslesen und in dem Label anzeigen lassen. Im Debug Fenster wird der Titel angezeigt, nur wie krieg ich's ausgelesen?

Danke schon mal im Vorab -- Kurt

Hier mal der komplette Code:

Code: Alles auswählen

; GUI DESIGNER V 0.3 Alpha

; Windows
Enumeration
  #Form100
EndEnumeration

; Menu
Enumeration
  #Menu_200
EndEnumeration

; MenuItem
Enumeration
EndEnumeration

; Gadget
Enumeration
  #DL01_1 = 1
  #DL01_2 = 2  
  #DL01_3 = 3  
  #DL01_4 = 4
  #DL01_5 = 5
  #DL01_6 = 6  
  #DL01_7 = 7
  #DL01_8 = 8  
  #DL01_9 = 9  
  #BtnAdd
  #BtnDownload
  #BtnDel
  #BtnClear
  #BtnExit
  #LabAdr
  #BtnYesNo
  
EndEnumeration


Procedure Open_Form100()
  
  OpenWindow(#Form100, 1157, 162, 600, 440, "Youtube Downloader", $2)
    ; Menüliste
    If CreateImageMenu(#Menu_200, WindowID(#Form100))
    EndIf

    ; Gadgetliste
    CheckBoxGadget(#DL01_1, 0, 0, 500, 25, "")
    CheckBoxGadget(#DL01_2, 0, 25, 500, 25, "")    
    CheckBoxGadget(#DL01_3, 0, 50, 500, 25, "")    
    CheckBoxGadget(#DL01_4, 0, 75, 500, 25, "")    
    CheckBoxGadget(#DL01_5, 0, 100, 500, 25, "")    
    CheckBoxGadget(#DL01_6, 0, 125, 500, 25, "")    
    CheckBoxGadget(#DL01_7, 0, 150, 500, 25, "")
    CheckBoxGadget(#DL01_8, 0, 175, 500, 25, "")    
    CheckBoxGadget(#DL01_9, 0, 200, 500, 25, "")    
    ButtonGadget(#BtnAdd, 0, 270, 100, 25, "Hinzufügen")
    ButtonGadget(#BtnDownload, 100, 270, 100, 25, "Download")
    ButtonGadget(#BtnDel, 200, 270, 100, 25, "Löschen")
    ButtonGadget(#BtnClear, 300, 270, 100, 25, "Lösche Alles")
    ButtonGadget(#BtnExit, 500, 270, 100, 25, "Ende")
    TextGadget(#LabAdr, 0, 233, 600, 25, "")
    StringGadget(#LabAdr, 0, 233, 600, 25, "")
    CheckBoxGadget(#BtnYesNo,470,233,50,25, "Ich bin sicher")
    HideGadget(#BtnYesNo,1)
  
  EndProcedure

Open_Form100()

Define.l Event, EventWindow, EventGadget, EventType, EventMenu

  Dim DlList.s(10)

  
; Event Schleife

Repeat
  Event = WaitWindowEvent()
  Select Event
; +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    Case #PB_Event_Menu
      EventMenu = EventMenu()
      ; Menü
; +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    Case #PB_Event_Gadget
      EventGadget = EventGadget()
      ; Gadget
      If EventGadget = #BtnAdd              
              Gosub AddAdresse
      ElseIf EventGadget = #BtnDownload
              Gosub Download        
      ElseIf EventGadget = #BtnDel
              DelFlag = 1
              Gosub Delete
      ElseIf EventGadget = #BtnClear
              Gosub ClearAll  
      ElseIf EventGadget = #BtnExit
              Gosub Programmende
      ElseIf EventGadget = #LabAdr

      EndIf
; +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
; ToolBar


; +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    Case #PB_Event_CloseWindow
      EventWindow = EventWindow()
      ; Window
      If EventWindow = #Form100
        CloseWindow(#Form100)
          End
       ; Break
      EndIf
; +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  EndSelect
  
  
 ForEver
 
 
Programmende:
  CloseWindow(#Form100)
  End
  Return
  
  
AddAdresse:
          HideGadget(#BtnYesNo,1)  
Adress$ = GetGadgetText (#LabAdr)           ; Adresse aus dem Textlabel
      If Adress$ = ""
          Return                            ; Es wurde nichts verändert
      EndIf
      
    For i=1 To 9      
      If (GetGadgetText (i)) = ""           ; Wenn der Platz noch frei ist
          SetGadgetText ((i), Adress$)      ; Adresse in die Tabelle schreiben
          SetGadgetText (#LabAdr, "")
            Return
       EndIf     
    Next

Return



Download:

HideGadget(#BtnYesNo,1)  
Marker = 0

For i=1 To 9      
    If (GetGadgetState (i)) = 1           ; wenn selektiert
      Marker=1                            ; setze Flag
    EndIf     
Next
  
    If Marker = 0
        SetGadgetText (#LabAdr, "Kein Download selektiert oder vorhanden!")          
        Return                            ; Abbruch wenn nichts markiert
    EndIf

    For i=1 To 9

    Adress$ = GetGadgetText (i)
    
    SetGadgetText(#LabAdr, "Lade " + Adress$)

;MessageRequester ("info", name + parameter)

mypgm= RunProgram("/usr/local/bin/youtube-dl", Chr(32) + Chr(34) + Adress$ + Chr(34), ".",  #PB_Program_Open|#PB_Program_Read)
;RunProgram("/usr/local/bin/youtube-dl", Chr(32) + Chr(34) + Adress$ + Chr(34), ".",  #PB_Program_Open|#PB_Program_Read)    
Repeat
    Debug ReadProgramString(mypgm)
    SetGadgetText(#LabAdr, "Lade " + Adress$)        
Until Not ProgramRunning(mypgm)

SetGadgetText(#LabAdr, "fertig")

Next

For i=1 To 9
      SetGadgetText ((i), "")             ; Textfeld und
      SetGadgetState ((i),0)              ; Status löschen
Next
   
      SetGadgetText (#LabAdr, "")  ; Label mit Standardtext füllen
      SetGadgetState (#BtnYesNo,0)        ; Flag für Auswertung löschen
      HideGadget(#BtnYesNo,1)             ; Button verstecken

Return


Delete:

Marker = 0
If DelFlag = 1
HideGadget(#BtnYesNo,1)  
EndIf

For i=1 To 9      
    If (GetGadgetState (i)) = 1           ; wenn selektiert
      Marker=1                            ; setze Flag
    EndIf     
Next
  
    If Marker = 0
        SetGadgetText (#LabAdr, "Kein Download selektiert oder vorhanden!")          
        Return                            ; Abbruch wenn nichts markiert
    EndIf
  
          HideGadget(#BtnYesNo,0)         ; Button sichtbar machen
          
          If (GetGadgetState(#BtnYesNo)) = 0
             SetGadgetText (#LabAdr, "Löschen markierter Downloads hier bestätigen: ")          
          Return
    EndIf
    
For i=1 To 9
    If (GetGadgetState (i)) = 1           ; wenn der Satus 1
      SetGadgetText ((i), "")             ; Text löschen
      SetGadgetState ((i),0)              ; und Staus zurück setzen
    EndIf
Next
  
    SetGadgetText (#LabAdr, "Markierte Downloads gelöscht!")
    SetGadgetState(#BtnYesNo,0)           ; Flag für Auswertung löschen
    HideGadget(#BtnYesNo,1)               ; Button verstecken
          
Return


ClearAll:

    HideGadget(#BtnYesNo,0)  

    If (GetGadgetState(#BtnYesNo)) = 0
          SetGadgetText (#LabAdr, "Löschen aller Downloads hier bestätigen: ")          
          Return
    EndIf
    
For i=1 To 9
      SetGadgetText ((i), "")             ; Textfeld und
      SetGadgetState ((i),0)              ; Status löschen
Next
   
      SetGadgetText (#LabAdr, "")  ; Label mit Standardtext füllen
      SetGadgetState (#BtnYesNo,0)        ; Flag für Auswertung löschen
      HideGadget(#BtnYesNo,1)             ; Button verstecken

Return
      
; IDE Options = PureBasic 5.70 LTS (Linux - x86)
; CursorPosition = 164
; FirstLine = 155
; Folding = -
; EnableXP
Edit by NicTheQuick: Code-Tags gesetzt
Zuletzt geändert von Sommertv am 04.05.2019 23:48, insgesamt 1-mal geändert.
Wenn einem die einfachen Dinge net einfallen, klappt's meistens umständlich...
ST4242
Beiträge: 42
Registriert: 29.10.2011 16:54

Re: Mein erstes PB Projekt und gleich einige Fragen

Beitrag von ST4242 »

Hallo,

was mir auffällt, das sowohl das TextGadget als auch das Stringgadget mit der gleichen Nummer #LabAdr erzeugt werden und auch auf der gleichen Stelle.
Das macht in meinen Augen keinen Sinn, da dann nur das Stringgadget anzusprechen ist.
Weiterhin empfehle ich nicht Gadgets über andere zu legen, da dies bei verschiedenen Systemen unterschiedlich aussehen kann (in Windows ist z.B. das -Ich bin mir sicher- nicht anwählbar)

Zum Thema Rückgabestring:
Dieser wird keiner Variable zugewiesen, wie willst Du sie weiter auslesen?

Gruß

Stefan
Benutzeravatar
mk-soft
Beiträge: 3695
Registriert: 24.11.2004 13:12
Wohnort: Germany

Re: Mein erstes PB Projekt und gleich einige Fragen

Beitrag von mk-soft »

Tips...

1. Alle Variabeln definieren. Siehe Global , Define, Protected
2. EnableExplicit verwenden
3. Nicht Gosub/Return verwenden. Siehe 'Procedure : ProcedureReturn : EndProcedure'

P.S. Bei Linux X64 musst du auch die 64Bit Version von Purebasic verwenden.

Folgende Libraries müssen noch installiert werden.
Purebasic
---------
sudo apt-get install build-essential gcc g++

sudo apt-get install libxxf86vm-dev libxine2-dev unixodbc-dev libsdl1.2-dev libsdl2-dev

sudo apt-get install libgtk2.0-dev libgtk-3-dev libwebkitgtk-dev libwebkitgtk-3.0-dev libwebkit2gtk-4.0-dev


Subsystem qt
------------
sudo apt-get install qtbase5-dev qttools5-dev qtmultimedia5-dev qtdeclarative5-dev libqt5svg5-dev libqt5webkit5-dev libqt5multimedia5-plugins


Ubuntu Gnome 18.xx (For PB-IDE)
-------------------------------
sudo apt install libcanberra-gtk-module

Obsoleted
---------
;sudo apt-get install libgnome2-dev
;sudo apt-get install libgnomeprintui2.2-dev libxine-dev


Ubuntu missing default libs (Without developer packets)
-------------------------------------------------------
gtk2
- sudo apt-get install libgtk2.0
gtk3
- sudo apt-get install libwebkitgtk-3.0
qt
- sudo apt install qt5-default
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Benutzeravatar
Kurzer
Beiträge: 1614
Registriert: 25.04.2006 17:29
Wohnort: Nähe Hamburg

Re: Mein erstes PB Projekt und gleich einige Fragen

Beitrag von Kurzer »

Ich habe den Code mal unter Windows laufen lassen und mir fällt als erstes auf, dass das Fenster nicht sichtbar ist. Man sieht nur den entsprechenden Button in der Taskleiste.

Das ganze liegt an dem Flag $2 bei Open Window. Was soll $2 unter Linux bewirken? (ich mag jetzt nicht alle möglichen #PB_Window_... Konstanten durch-debuggen)

Code: Alles auswählen

OpenWindow(#Form100, 157, 162, 600, 440, "Youtube Downloader", $2)
Gruß Kurzer
"Never run a changing system!" | "Unterhalten sich zwei Alleinunterhalter... Paradox, oder?"
PB 6.02 x64, OS: Win 7 Pro x64 & Win 11 x64, Desktopscaling: 125%, CPU: I7 6500, RAM: 16 GB, GPU: Intel Graphics HD 520
Useralter in 2023: 56 Jahre.
Nino
Beiträge: 1300
Registriert: 13.05.2010 09:26
Wohnort: Berlin

Re: Mein erstes PB Projekt und gleich einige Fragen

Beitrag von Nino »

Im Anfänger-Forum werden zumeist Fragen gestellt, das muss nicht durch Erwähnung im Thread-Titel hervorgehoben werden. Und ob es sich um jemandes erstes oder ggf. zweites Projekt handelt spielt hier auch keine Rolle.

Kann der OP oder ein Moderator bitte den Thread-Titel so ändern, dass er etwas mit dem Thema des Threads zu tun hat? Das erleichtert Anderen später das Suchen. Danke im Voraus!
Sommertv
Beiträge: 68
Registriert: 26.04.2019 10:31
Computerausstattung: Lenovo W500, Debian Stable, Purebasic 5.70 (momentan die Testversion)
Wohnort: Mühldorf am Inn

Re: Mein erstes PB Projekt und gleich einige Fragen

Beitrag von Sommertv »

Guten Morgen,

wie kann man denn das Thema nachträglich verschieben?

Was $2 betrifft: das wurde so vom GUI Designer eingefügt, ich hab das nicht weiter beachtet weil laufen tut's ja soweit.

Wegen dem Text und String Gadget: In irgend einem anderen Beitrag wurde das so empfohlen, übereinander zu legen, weil sonst die Texteingabe nicht sichtbar ist. Anfangs hat die Texteingabe nicht funktioniert, schätze typischer Anfängerfehler, hab gestern das TextGadget ausgeblendet und es funktioniert auch ohne. -- Danke

Wegen dem Rückgabestring: das genau will ich ja von euch wissen, einen String dafür festlegen ist ja kein Problem. Der Rückgabewert sollte in dem StringGadget angezeigt werden.

Schöne Grüsse
Kurt
Wenn einem die einfachen Dinge net einfallen, klappt's meistens umständlich...
Benutzeravatar
RSBasic
Admin
Beiträge: 8022
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: Mein erstes PB Projekt und gleich einige Fragen

Beitrag von RSBasic »

Sommertv hat geschrieben:wie kann man denn das Thema nachträglich verschieben?
Du sollst das Thema nicht verschieben, sondern den Titel deines Themas ändern, in dem du ganz nach oben scrollst und auf den Button drückst: Bild
Im Beitragseditor einfach in der ersten Eingabeleiste neben "Betreff" den Titel in einen passenden Titel umschreiben.
Der Titel soll kurz dein Problem beschreiben.
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Nino
Beiträge: 1300
Registriert: 13.05.2010 09:26
Wohnort: Berlin

Re: Mein erstes PB Projekt und gleich einige Fragen

Beitrag von Nino »

@Sommertv:

Ich schlage vor, du pflegst erstmal deine inzwischen vorgenommenen Änderungen sowie die ganz grundlegenden Tipps von mk-soft (s.o.) in den Code ein und postest ihn dann wieder hier. So geht es Schritt für Schritt voran.
Benutzeravatar
silbersurfer
Beiträge: 174
Registriert: 06.07.2014 12:21

Re: Mein erstes PB Projekt und gleich einige Fragen

Beitrag von silbersurfer »

@Sommertv
Der Rückgabewert sollte in dem StringGadget angezeigt werden
bevor deine frage hier unter geht !
der befehle wäre SetGadgetText(#Gadget,Stringvariable) diesen benutzt du ja auch schon.

und was Mk-Soft schon sagte !
hier ein Beispiel für die verwendung einer Procedure anstelle eines Gosub : Return

Code: Alles auswählen

Procedure ClearAll()
    HideGadget(#BtnYesNo,0) 

    If (GetGadgetState(#BtnYesNo)) = 0
          SetGadgetText (#LabAdr, "Löschen aller Downloads hier bestätigen: ")         
          Return
    EndIf
   
For i=1 To 9
      SetGadgetText ((i), "")             ; Textfeld und
      SetGadgetState ((i),0)              ; Status löschen
Next
   
      SetGadgetText (#LabAdr, "")  ; Label mit Standardtext füllen
      SetGadgetState (#BtnYesNo,0)        ; Flag für Auswertung löschen
      HideGadget(#BtnYesNo,1)             ; Button verstecken

EndProcedure 
Intel Quad Core 3,2 Ghz - GTX 1060 - BlitzBasic Plus 1.48 , PureBasic 5.70 LTS / Aktuelles Projekt PureCommander
Sommertv
Beiträge: 68
Registriert: 26.04.2019 10:31
Computerausstattung: Lenovo W500, Debian Stable, Purebasic 5.70 (momentan die Testversion)
Wohnort: Mühldorf am Inn

Re: Texte innerhalb einer Schleife anzeigen und String einle

Beitrag von Sommertv »

Hallo,
das Thema hab ich jetzt geändert, den Quelltext umgebaut, die Fehler sind aber immer noch dieselben.
Ich stell, ausser dass es im Editor etwas aufgeräumter ist, keinen Unterschied zwischen Prozeduren
und der von mir ursprünglich verwendetetn Gosub/Return Methode fest.

Hier mal der neue Code:

Code: Alles auswählen


; GUI DESIGNER V 0.3 Alpha

; Windows
Enumeration
  #Form100
EndEnumeration

; Menu
Enumeration
  #Menu_200
EndEnumeration

; MenuItem
Enumeration
EndEnumeration

; Gadget
Enumeration
  #DL01_1 = 1
  #DL01_2 = 2  
  #DL01_3 = 3  
  #DL01_4 = 4
  #DL01_5 = 5
  #DL01_6 = 6  
  #DL01_7 = 7
  #DL01_8 = 8  
  #DL01_9 = 9  
  #BtnAdd
  #BtnDownload
  #BtnDel
  #BtnClear
  #BtnExit
  #LabAdr
  #BtnYesNo
  
EndEnumeration


Procedure Open_Form100()
  
  OpenWindow(#Form100, 1157, 162, 600, 440, "Youtube Downloader")
    ; Menüliste
    If CreateImageMenu(#Menu_200, WindowID(#Form100))
    EndIf

    ; Gadgetliste
    CheckBoxGadget(#DL01_1, 0, 0, 500, 25, "")
    CheckBoxGadget(#DL01_2, 0, 25, 500, 25, "")    
    CheckBoxGadget(#DL01_3, 0, 50, 500, 25, "")    
    CheckBoxGadget(#DL01_4, 0, 75, 500, 25, "")    
    CheckBoxGadget(#DL01_5, 0, 100, 500, 25, "")    
    CheckBoxGadget(#DL01_6, 0, 125, 500, 25, "")    
    CheckBoxGadget(#DL01_7, 0, 150, 500, 25, "")
    CheckBoxGadget(#DL01_8, 0, 175, 500, 25, "")    
    CheckBoxGadget(#DL01_9, 0, 200, 500, 25, "")    
    ButtonGadget(#BtnAdd, 0, 270, 100, 25, "Hinzufügen")
    ButtonGadget(#BtnDownload, 100, 270, 100, 25, "Download")
    ButtonGadget(#BtnDel, 200, 270, 100, 25, "Löschen")
    ButtonGadget(#BtnClear, 300, 270, 100, 25, "Lösche Alles")
    ButtonGadget(#BtnExit, 500, 270, 100, 25, "Ende")
    StringGadget(#LabAdr, 0, 233, 600, 25, "")
    CheckBoxGadget(#BtnYesNo,470,233,50,25, "Ich bin sicher")
    HideGadget(#BtnYesNo,1)
  
  EndProcedure

Open_Form100()

Define.l Event, EventWindow, EventGadget, EventType, EventMenu

Declare AddAdresse()
Declare Download()
Declare Delete()
Declare ClearAll()
Declare Programmende()

  
; Event Schleife

Repeat
  Event = WaitWindowEvent()
  Select Event
; +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    Case #PB_Event_Menu
      EventMenu = EventMenu()
      ; Menü
; +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    Case #PB_Event_Gadget
      EventGadget = EventGadget()
      ; Gadget
      If EventGadget = #BtnAdd              
              AddAdresse()
      ElseIf EventGadget = #BtnDownload
              Download()
      ElseIf EventGadget = #BtnDel
              DelFlag = 1
              Delete()
      ElseIf EventGadget = #BtnClear
              ClearAll()  
      ElseIf EventGadget = #BtnExit
              Programmende()
      ElseIf EventGadget = #LabAdr

      EndIf
; +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
; ToolBar


; +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    Case #PB_Event_CloseWindow
      EventWindow = EventWindow()
      ; Window
      If EventWindow = #Form100
        CloseWindow(#Form100)
          End
       ; Break
      EndIf
; +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  EndSelect
  
  
 ForEver
 
 
Procedure Programmende()
  
  CloseWindow(#Form100)
  End
  
EndProcedure 
  
 
Procedure AddAdresse()

          HideGadget(#BtnYesNo,1)  
Adress$ = GetGadgetText (#LabAdr)           ; Adresse aus dem Textlabel
      If Adress$ = ""
       ProcedureReturn                            ; Es wurde nichts verändert
      EndIf
      
    For i=1 To 9      
      If (GetGadgetText (i)) = ""           ; Wenn der Platz noch frei ist
          SetGadgetText ((i), Adress$)      ; Adresse in die Tabelle schreiben
          SetGadgetText (#LabAdr, "")
            ProcedureReturn
       EndIf     
    Next

EndProcedure 


Procedure Download()

HideGadget(#BtnYesNo,1)  
Marker = 0

For i=1 To 9      
    If (GetGadgetState (i)) = 1           ; wenn selektiert
      Marker=1                            ; setze Flag
    EndIf     
Next
  
    If Marker = 0
        SetGadgetText (#LabAdr, "Kein Download selektiert oder vorhanden!")          
        ProcedureReturn                            ; Abbruch wenn nichts markiert
    EndIf

    For i=1 To 9

    Adress$ = GetGadgetText (i)
    
    SetGadgetText(#LabAdr, "Lade " + Adress$)

;MessageRequester ("info", name + parameter)

mypgm= RunProgram("/usr/local/bin/youtube-dl", Chr(32) + Chr(34) + Adress$ + Chr(34), ".",  #PB_Program_Open|#PB_Program_Read)
;RunProgram("/usr/local/bin/youtube-dl", Chr(32) + Chr(34) + Adress$ + Chr(34), ".",  #PB_Program_Open|#PB_Program_Read)    
Repeat
    Debug ReadProgramString(mypgm)
    SetGadgetText(#LabAdr, "Lade " + Adress$)        
Until Not ProgramRunning(mypgm)

SetGadgetText(#LabAdr, "fertig")

Next

For i=1 To 9
      SetGadgetText ((i), "")             ; Textfeld und
      SetGadgetState ((i),0)              ; Status löschen
Next
   
      SetGadgetText (#LabAdr, "")         ; Label löschen
      SetGadgetState (#BtnYesNo,0)        ; Flag für Auswertung löschen
      HideGadget(#BtnYesNo,1)             ; Button verstecken

EndProcedure


Procedure Delete()

Marker = 0
If DelFlag = 1
HideGadget(#BtnYesNo,1)  
EndIf

For i=1 To 9      
    If (GetGadgetState (i)) = 1           ; wenn selektiert
      Marker=1                            ; setze Flag
    EndIf     
Next
  
    If Marker = 0
        SetGadgetText (#LabAdr, "Nichts zum löschen selektiert oder vorhanden!")          
        ProcedureReturn                            ; Abbruch wenn nichts markiert
    EndIf
  
          HideGadget(#BtnYesNo,0)         ; Button sichtbar machen
          
          If (GetGadgetState(#BtnYesNo)) = 0
             SetGadgetText (#LabAdr, "Löschen markierter Downloads hier bestätigen: ")          
          ProcedureReturn
    EndIf
    
For i=1 To 9
    If (GetGadgetState (i)) = 1           ; wenn der Satus 1
      SetGadgetText ((i), "")             ; Text löschen
      SetGadgetState ((i),0)              ; und Status zurück setzen
    EndIf
Next
  
    SetGadgetText (#LabAdr, "Markierte Downloads gelöscht!")
    SetGadgetState(#BtnYesNo,0)           ; Flag für Auswertung löschen
    HideGadget(#BtnYesNo,1)               ; Button verstecken
          
EndProcedure



Procedure ClearAll()

    HideGadget(#BtnYesNo,0)  

    If (GetGadgetState(#BtnYesNo)) = 0
          SetGadgetText (#LabAdr, "Löschen aller Downloads hier bestätigen: ")          
          ProcedureReturn
    EndIf
    
For i=1 To 9
      SetGadgetText ((i), "")             ; Textfeld und
      SetGadgetState ((i),0)              ; Status löschen
Next
   
      SetGadgetText (#LabAdr, "")         ; Label löschen
      SetGadgetState (#BtnYesNo,0)        ; Flag für Auswertung löschen
      HideGadget(#BtnYesNo,1)             ; Button verstecken

EndProcedure      

Wenn einem die einfachen Dinge net einfallen, klappt's meistens umständlich...
Antworten