Progressbar friert ein...

Anfängerfragen zum Programmieren mit PureBasic.
Rene-RNI
Beiträge: 18
Registriert: 10.09.2013 14:32

Progressbar friert ein...

Beitrag 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...
Benutzeravatar
Bisonte
Beiträge: 2468
Registriert: 01.04.2007 20:18

Re: Progressbar friert ein...

Beitrag 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
PureBasic 6.21 (Windows x86/x64) | Windows11 Pro x64 | AsRock B850 Steel Legend Wifi | R7 9800x3D | 64GB RAM | GeForce RTX 5080 | ThermaltakeView 270 TG ARGB | build by vannicom​​
Rene-RNI
Beiträge: 18
Registriert: 10.09.2013 14:32

Re: Progressbar friert ein...

Beitrag von Rene-RNI »

Danke dir, diese Zeile hat alles gelöst!
Benutzeravatar
CSHW89
Beiträge: 489
Registriert: 14.12.2008 12:22

Re: Progressbar friert ein...

Beitrag 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
Bild Bild Bild
http://www.jasik.de - Windows Hilfe Seite
padawan hat geschrieben:Ich liebe diese von hinten über die Brust ins Auge Lösungen
Rene-RNI
Beiträge: 18
Registriert: 10.09.2013 14:32

Re: Progressbar friert ein...

Beitrag von Rene-RNI »

Danke dir, klappt wunderbar!
Antworten