In meinem Programm lese ich aus einer Textdatei Datensätze und und schreibe diese in eine SQL-DB.
Ging selbst bei 300000 Datensätzen recht fix, bis ich auf die Idee kam ein Fortschrittsfenster einzubauen.
Erst nachdem ich die Gadgets nur alle 100 Datensätze aktualisierte war das Ergebnis einigermaßen OK.
Trotz der Verzögerung von "alle 100 Datensätze" ist mir jedoch aufgefallen, das nur die Gadget Befehle 10% der Programmausführungszeit benötigen.
Hier ein kleines Beispiel zum veranschaulichen:
Code: Alles auswählen
anzahl=300000
; Fenster und Gadgets öffnen
Window_0 = OpenWindow(#PB_Any, 0, 0, 740, 270, "Daten importieren", #PB_Window_SystemMenu | #PB_Window_TitleBar | #PB_Window_ScreenCentered)
ProgressBar_0 = ProgressBarGadget(#PB_Any, 200, 20, 290, 30, 0, anzahl, #PB_ProgressBar_Smooth)
Text_0 = TextGadget(#PB_Any, 200, 50, 290, 20, "", #PB_Text_Center)
Text_1 = TextGadget(#PB_Any, 20, 90, 110, 20, "Vorlaufdaten:", #PB_Text_Right)
Text_2 = TextGadget(#PB_Any, 10, 120, 120, 25, "Hauptdaten A:", #PB_Text_Right)
Text_3 = TextGadget(#PB_Any, 20, 150, 110, 20, "Hauptdaten B:", #PB_Text_Right)
Text_4 = TextGadget(#PB_Any, 20, 180, 110, 20, "Langtexte:", #PB_Text_Right)
Text_5 = TextGadget(#PB_Any, 140, 90, 220, 20, "")
Text_6 = TextGadget(#PB_Any, 140, 120, 200, 20, "")
Text_7 = TextGadget(#PB_Any, 140, 150, 230, 20, "")
Text_8 = TextGadget(#PB_Any, 140, 180, 230, 20, "")
Button_0 = ButtonGadget(#PB_Any, 310, 230, 100, 25, "Abbruch")
WaitWindowEvent()
;Code ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
While ee<100000
a+1
b+1
c+1
ee+1
;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
verzoegerung+1
If verzoegerung=20
;Gadgets aktualisieren
SetGadgetText(Text_0,Str(a+b+c)+" von "+Str(anzahl))
SetGadgetState(ProgressBar_0,a+b+c)
SetGadgetText(Text_6,Str(a)+" von 100000")
SetGadgetText(Text_8,Str(b)+" von 100000")
SetGadgetText(Text_7,Str(c)+" von 100000")
WaitWindowEvent()
;Abbruch Button abfragen
If EventGadget()=Button_0
result=MessageRequester("Achtung!","Möchten Sie wirklich abbrechen?",#PB_MessageRequester_YesNo)
If result=#PB_MessageRequester_Yes
End
EndIf
EndIf
verzoegerung=0
EndIf
WendOder mache ich da vielleicht was falsch??
Gruß, Michael
