Seite 1 von 1

Progressbar friert ein...

Verfasst: 10.09.2013 14:36
von Rene-RNI
Hallo vieleicht kann mir hier jemand helfen.

Ich habe einen Uploader für unser Radio geschrieben, aber wenn der Upload läuft und ich verlasse das Fenster friert die Anwendung ein, also keinerlei Updates der Gui mehr, erst wenn der Upload beendet ist, aktualisiert sich die Gui wieder.

Hier mal der Upload Code:

Code: Alles auswählen

Procedure Upload()
  HideGadget(#gad_LB_Upload, 0)
  BRC$ = GetGadgetItemText(#gad_CB_Title, GetGadgetState(#gad_CB_Title))
  Dat$ = GetGadgetText(#gad_DT_Showdate)
  Serv$ = Left(BRC$, 2)
  Clock$ = Mid(BRC$, 4, 4)
  Titel$ = Mid(BRC$, 9)
  Tag$ = Mid(BRC$, 9 , 2)
  Debug Dat$
  Debug Serv$
  Debug Clock$
  Debug Titel$
  Debug User$
  Debug Tag$

    
     
  Global Datei$ = Dat$ + "-" + Clock$ + "_" + Titel$ + "-" + User$ + ".mp3"
  Debug Datei$
  RenameFile("Upload.mp3", Datei$)
  If Serv$ = "DE"
    Dir$ = "germanservice"
  ElseIf Serv$ = "EN"
    Dir$ = "englishservice"
  ElseIf Serv$ = "DT"
    Dir$ = "dutchservice"
  EndIf
  If OpenFTP(#FTP, FTPServer$, FTPUser$, FTPPass$)
    StatusBarText(#gad_Status, 1, "FTP", #PB_StatusBar_Center)
        If SetFTPDirectory(#FTP, Dir$)
          If SendFTPFile(#FTP, Datei$, Datei$, #True)
            SizeOfFile.l =  FileSize(Datei$)
            Repeat
              Debug "FTP Progress"+ Str(FTPProgress(#FTP))
              SetGadgetText(#gad_LB_Upload, "Upload in progress: "+ Str(FTPProgress(#FTP)) +"/"+ SizeOfFile + " Bytes")
              Delay(300)
            Until FTPProgress(#FTP) = #PB_FTP_Finished Or FTPProgress(#FTP) = #PB_FTP_Error
              MessageRequester("Upload", "Upload Complete", #PB_MessageRequester_Ok)
            Else
              MessageRequester("ERROR", "Upload failed", #PB_MessageRequester_Ok)
            EndIf
        Else
          MessageRequester("ERROR", "Service not selected", #PB_MessageRequester_Ok)
        EndIf
    Else
        MessageRequester("ERROR", "FTP Connect failed", #PB_MessageRequester_Ok)
    EndIf
    CloseFTP(#FTP)
    HideGadget(#gad_LB_Upload, 1)
    StatusBarText(#gad_Status, 1, "", #PB_StatusBar_Center)
    If CreateMail(#MailDE, "ftp@radio-northsea.de", "New Uni-Upload")
    SetMailBody(#MailDE, "New Upload for " + User$ + " !" + #CRLF$ + "Link: http://ftp.radio-northsea.de/"+Dir$+"/"+ Datei$)

    AddMailRecipient(#MailDE, "XXXXX", #PB_Mail_To)
    AddMailRecipient(#MailDE, "XXXXX", #PB_Mail_To)
    AddMailRecipient(#MailDE, "XXXXX", #PB_Mail_To)
    Debug "Mail erstellt"
    If SendMail(#MailDE, "XXXX", 25, 0, "XXXX", "XXX")
      Debug "Mail versendet"
    Else
      Debug "Mail nicht versendet"
    EndIf
  Else
    Debug "Konnte die Mail nicht erstellen"
  EndIf
    DeleteFile(Datei$)
EndProcedure

Danke schon mal...

Re: Progressbar friert ein...

Verfasst: 10.09.2013 14:53
von Bisonte
da der Code so nicht lauffähig ist... ungetestet.

Es fehlt das Abholen der Window Events...

Probiere das :

Code: Alles auswählen

  If OpenFTP(#FTP, FTPServer$, FTPUser$, FTPPass$)
    StatusBarText(#gad_Status, 1, "FTP", #PB_StatusBar_Center)
        If SetFTPDirectory(#FTP, Dir$)
          If SendFTPFile(#FTP, Datei$, Datei$, #True)
            SizeOfFile.l =  FileSize(Datei$)
            Repeat
              Event = WindowEvent() ; <------- Hier Events Abholen
              Debug "FTP Progress"+ Str(FTPProgress(#FTP))
              SetGadgetText(#gad_LB_Upload, "Upload in progress: "+ Str(FTPProgress(#FTP)) +"/"+ SizeOfFile + " Bytes")
              Delay(300)
            Until FTPProgress(#FTP) = #PB_FTP_Finished Or FTPProgress(#FTP) = #PB_FTP_Error
              MessageRequester("Upload", "Upload Complete", #PB_MessageRequester_Ok)
            Else
              MessageRequester("ERROR", "Upload failed", #PB_MessageRequester_Ok)
            EndIf
        Else
          MessageRequester("ERROR", "Service not selected", #PB_MessageRequester_Ok)
        EndIf
    Else
        MessageRequester("ERROR", "FTP Connect failed", #PB_MessageRequester_Ok)
    EndIf

Re: Progressbar friert ein...

Verfasst: 10.09.2013 15:19
von Rene-RNI
Danke dir, diese Zeile hat alles gelöst!

Re: Progressbar friert ein...

Verfasst: 11.09.2013 11:58
von CSHW89
Das Delay(300) solltest du aber auch rausschmeißen. Ich würde dann WaitWindowEvent empfehlen, mit einem eingebauten Delay. Das verhindert ein Einfrieren, falls mehrere Events abgefangen werden müssen (z.B. beim Verschieben des Fensters):

Code: Alles auswählen

Repeat
    Repeat
    Until (WaitWindowEvent(300) = 0)
    Debug "FTP Progress"+ Str(FTPProgress(#FTP))
    SetGadgetText(#gad_LB_Upload, "Upload in progress: "+ Str(FTPProgress(#FTP)) +"/"+ SizeOfFile + " Bytes")
Until FTPProgress(#FTP) = #PB_FTP_Finished Or FTPProgress(#FTP) = #PB_FTP_Error
lg Kevin

Re: Progressbar friert ein...

Verfasst: 18.09.2013 14:11
von Rene-RNI
Danke dir, klappt wunderbar!