ladebalken beim kopieren

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Sauer-RAM
Beiträge: 326
Registriert: 13.04.2009 16:22
Computerausstattung: Lenovo ThinkPad X230t Convertible
Wohnort: Haslach i. K.

ladebalken beim kopieren

Beitrag von Sauer-RAM »

Hi,

Ich würde gerne ein Programm schreiben, das ein anderes Programm auf dem Rechner installiert und damit die Leute die mein Programm damit installieren wissen wie lange es noch dauert, würde gerne ein ladebalken hinmachen. Ich weis aber nicht wie das funktioniert.
Kann mir einer mal erklären wie das geht?
danke schonmal
"Bildung kommt vom Bildschirm und nicht vom Buch, sonst hieße es ja Buchung."
Dieter Hildebrandt
"Bildung ist Das, was übrig bleibt, wenn man alles was man in der Schule gelernt hat, vergisst. "
Albert Einstein
sibru
Beiträge: 265
Registriert: 15.09.2004 18:11
Wohnort: hamburg

Beitrag von sibru »

Code: Alles auswählen

#gnr=1

If OpenWindow(0,0,0,200,60,"ProgressBar",#PB_Window_ScreenCentered | #PB_Window_SystemMenu) ;Fenster aufbauen
    min=0 ;minimal-Wert des Balkens
    max=100 ;maximal-Wert des Balkens
    ProgressBarGadget(#gnr,20,20,160,20,min,max,#PB_ProgressBar_Smooth) ;FortschrittsBalken aufbauen
EndIf

Repeat 
  Status+1
  SetGadgetState(#gnr,Status) ;aktuellen Wert im Balken einstellen
  Select WaitWindowEvent(100)
    Case #PB_Event_CloseWindow
      End
  EndSelect
ForEver
Bild Bild
Benutzeravatar
Sauer-RAM
Beiträge: 326
Registriert: 13.04.2009 16:22
Computerausstattung: Lenovo ThinkPad X230t Convertible
Wohnort: Haslach i. K.

Beitrag von Sauer-RAM »

@sibru
danke
geht das auch in der demoversion?
"Bildung kommt vom Bildschirm und nicht vom Buch, sonst hieße es ja Buchung."
Dieter Hildebrandt
"Bildung ist Das, was übrig bleibt, wenn man alles was man in der Schule gelernt hat, vergisst. "
Albert Einstein
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

wie wärs wenn du's ersma ausprobiers? :lol:
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

also....
bei komplexeren Vorgängen wie du es ja machen willst ist das etwas umfangreicher.

du musst die beiden Vorgänge trennen - den Kopier/Lade/Install/Rechen/Whatever-Vorgang und die Eventschleife für dein Fenster.

am besten geht das, wenn du den Arbeitsintensiven Vorgang in einen Thread auslagerst,
und über eine Globale oder Shared Variable den Fortschritt mitteilst.

Ich hab dir mal ein kleines Beispiel geschrieben:
- das Zählen auf der Konsole symbolisiert den eigentlichen Arbeitsvorgang
- die Shared Variable GlobalCount dient zur Übergabe des Fortschritts
- die Eventschleife ist davon unabhängig, muss aber trotzdem getimert werden um auch bei keinem event durchzulaufen.
- der Progressbar wird nur bei Null-Event, also Timeout, upgedatet.

Code: Alles auswählen

Define  GlobalCount.l

Procedure Counter( dummy.l )
  Shared GlobalCount.l
  Protected InternalCount.l

  OpenConsole()

  Repeat
    Print( Str(InternalCount)+", " )
    InternalCount +1
    If InternalCount > 99
      InternalCount = 0
      GlobalCount +1
    EndIf
    Delay(10)
  Until GlobalCount => 100
  CloseConsole()
EndProcedure

#Window1 = 0
#ProgressBar = 0


OpenWindow(#Window1, 0,0, 300, 200, "Zählen...")
  ProgressBarGadget(#ProgressBar, 20,20, 260, 32, 0, 100, #PB_ProgressBar_Smooth)

CreateThread( @Counter(), 0 )
  
Repeat
  EvID = WaitWindowEvent(200)
  Select EvID
;**************************  
    Case #Null
      SetGadgetState( #ProgressBar, GlobalCount )
;**************************  
    Case #PB_Event_CloseWindow
      EXIT = 1
  EndSelect
Until EXIT
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
Vermilion
Beiträge: 1846
Registriert: 08.04.2006 16:00
Computerausstattung: Apple iMac (2010) & HP Notebook
Wohnort: Heidekreis

Beitrag von Vermilion »

Nur so ein Tipp: Es gibt schon viele, freie Installationssysteme, mein Liebling ist NSIS, wenn du dich da ein bisschen einarbeitest (ist nicht schwer), dann sparst du dir Zeit und Arbeit, als wenn du das komplett selbst schreibst, falls du das willst.
Bild

Immer die neueste PureBasic Version. Auf allem Betriebssystemen. Ich bin ein OS-Nomad!
Benutzeravatar
Sauer-RAM
Beiträge: 326
Registriert: 13.04.2009 16:22
Computerausstattung: Lenovo ThinkPad X230t Convertible
Wohnort: Haslach i. K.

Beitrag von Sauer-RAM »

@Vermilion
ich weis ich hab instalforge.
aber ich wollte halt einfach mal wissen wie das geht.
"Bildung kommt vom Bildschirm und nicht vom Buch, sonst hieße es ja Buchung."
Dieter Hildebrandt
"Bildung ist Das, was übrig bleibt, wenn man alles was man in der Schule gelernt hat, vergisst. "
Albert Einstein
Antworten