ProgressBar blinkt
ProgressBar blinkt
Mein Prog lädt über eine FTP-Verbindung viele Dateien runter, aus denen dann später mehrere Daten ausgelesen werden, für beide Vorgäng wollt ich dann je eine ProgressBar haben. Funktioniert soweit ganz gut, nur das die 4 benötigten Gadgets unerlaubt blinken/flattern an was könnte das liegen und wie kann man das verhindern?
Wir leben alle unter dem gleichen Sternenhimmel, aber wir haben nicht alle den gleichen Horizont.
- ts-soft
- Beiträge: 22292
- Registriert: 08.09.2004 00:57
- Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel - Wohnort: Berlin
Vermutlich liegt das an Deiner Event-Loop Routine
>> wie kann man das verhindern?
Vermutlich schon
, aber meine Glaskugel ist kaputt 
>> wie kann man das verhindern?
Vermutlich schon


PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

ts-soft hat geschrieben:Vermutlich liegt das an Deiner Event-Loop Routine
>> wie kann man das verhindern?
Vermutlich schon, aber meine Glaskugel ist kaputt

Er fragte nach wie, nicht ob

^^Ich könnt dem noch was hinzufügen und mich ma selber zitieren.
Wie war das noch mit dem Forum und dem Hellseher? Solche Threads in einem Hellseher-Forum eröffnen

Alternative wäre, du postest deinen aktuellen Code ...
MFG PMV
- ts-soft
- Beiträge: 22292
- Registriert: 08.09.2004 00:57
- Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel - Wohnort: Berlin
Aber er wollte ob Wissen, da ging die Glaskugel noch.PMV hat geschrieben: Er fragte nach wie, nicht ob*klugscheiß*
Aber diese Fragen ohne Code, worauf man sowieso fast alles Antworten
kann, finde ich schon witzig
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Ich gehe mal davon aus, dass du bei jedem Event den Vortschritt anpasst.
D.h. du solltest nicht so oft den Status des gadgets ändern. Das bekommst du am besten mit Modulu hin (%).
D.h. du solltest nicht so oft den Status des gadgets ändern. Das bekommst du am besten mit Modulu hin (%).
Code: Alles auswählen
t+1
If t %100 = 0
;Hier solltest du dann den Status verändern.
t=0
endif
Ich würd den Code ja reinstellen, aber da ich Anfänger bin ist der Code schlecht strukturiert und so gut wie nicht eingerückt. Vom Stil wollen wir an dieser Stelle mal nicht reden.
Aber Hellsehen ist einfacher als Dunkelsehen
Aber Hellsehen ist einfacher als Dunkelsehen
Wir leben alle unter dem gleichen Sternenhimmel, aber wir haben nicht alle den gleichen Horizont.
Stimmt ich hab viel zu oft den Status akualisiert. Jetzt ist es besser aber noch lange nicht gut.
_______________
bobobo hat gecodetagt
Code: Alles auswählen
Code:
;-Variablen deklarieren
;{ StringVariablen
Auftragsnummer.s
Auftragsnummer1.s
Datei.s
Datum.s
Datum1.s
DAUH.s
DirectoryHP.s
Eingabe.s
Endung.s
Endung1.s
fehlendeSNR.s
fehlendeSNRe.s
fehlendeSNRl.s
FEL.s
File.s
Jahr.s
Minute.s
Monat.s
Ordner.s
Pruefergebnis.s
r1.s
r2.s
ReeleNr.s
s.l
Sekunde.s
Seriennummer.s
Seriennummer1.s
split1.s
split2.s
split3.s
split4.s
Stunde.s
Tag.s
Teil.s
Teil1.s
Test1.s
Zeitcode1h.s
Zeitcode1m.s
Zeitcode1s.s
Zeitcode2h.s
Zeitcode2m.s
Zeitcode2s.s
;}
;{ LongVariablen
ASZ.l
DA.l
DAZ.l
DAZ1.l
doppeltPass.l
Ergebnis1.l
Ergebnis2.l
Ergebnis3.l
Ergebnis4.l
Faktor2.l; Seriennummer
Faktor3.l; Auftragnummer
fensterz.l
Gadget.l = 6
Gadget1.l = 6
Laenge.l
Laenge1.l
LPLFail.l
LPLFehler.l
LPLPass.l
Position.l
r3.l
r31.s
r3l.l
r3e.l
r3l1.s = Hex(r3l)
r3e1.s
schlecht.l = 0
start.l
Versuche.l = 1
y.l = 80
y1.l = 80
Zeiten.l
;}
;{ FloatVariablen
Size.f
Size1.f
;}
;{ Structuren und Listen
Structure Daten
Seriennummer.s
Datum.s
Uhrzeit.s
Pruefergebnis.s
Auftragsnummer.s
Versuche.l
Dateiname.s
ReeleNr.l
dochgut.l
Groesse.f
Zeit.l
EndStructure
Structure Rechnen
ReeleNr.l
EndStructure
Structure FF
Seriennummer.s
Versuche.l
EndStructure
NewList LPLPass.Daten()
NewList LPLFail.Daten()
NewList LPLFehler.Daten()
NewList LPLFehlerfiktiv.FF()
NewList fiktiv.Rechnen()
;}
Anfang:
;-Auswahl der Auszuwertenden E+H LPL nach der Benutzereingabe
;{ Fenster einrichten und Auswahl
DirectoryHP.s
If OpenWindow(0,0,0,350,350,#PB_Window_SystemMenu|#PB_Window_ScreenCentered|#PB_Window_MinimizeGadget ,"Endress & Hauser 'Kontrolle'") And CreateGadgetList(WindowID(0))
EndIf
TextGadget ( 0, 15, 10, 330, 40, "Einfach die zu überprüfende LPL auswählen." + Chr(13) + "Achtung! Dieses Programm hat keine Freigabe und dient nur zu Testzwecken!")
ButtonGadget ( 1, 40, 100, 120, 20, "FEL51")
ButtonGadget ( 2, 180, 100, 120, 20, "FEL52")
ButtonGadget ( 3, 40, 140, 120, 20, "FEL53") : DisableGadget(3, 1)
ButtonGadget ( 4, 180, 140, 120, 20, "FEL54")
ButtonGadget ( 5, 40, 180, 120, 20, "FEL55") : DisableGadget(5, 1)
ButtonGadget ( 6, 180, 180, 120, 20, "FEL56")
ButtonGadget ( 7, 40, 220, 120, 20, "FEL57")
ButtonGadget ( 8, 180, 220, 120, 20, "FEL58")
ButtonGadget ( 9, 75, 290, 200, 20, "Abbrechen")
Frame3DGadget(10, 15, 60, 310, 205,"Hier die Auswahl treffen:",#PB_Frame3D_Double)
TextGadget (11, 10, 320, 330, 20, "Erstellt von D. Schätzle", #PB_Text_Border | #PB_Text_Center)
GadgetToolTip(1, "Erstellt eine Auswertung für die FEL51")
GadgetToolTip(2, "Erstellt eine Auswertung für die FEL52")
GadgetToolTip(3, "Erstellt eine Auswertung für die FEL53")
GadgetToolTip(4, "Erstellt eine Auswertung für die FEL54")
GadgetToolTip(5, "Erstellt eine Auswertung für die FEL55")
GadgetToolTip(6, "Erstellt eine Auswertung für die FEL56")
GadgetToolTip(7, "Erstellt eine Auswertung für die FEL57")
GadgetToolTip(8, "Erstellt eine Auswertung für die FEL58")
GadgetToolTip(9, "Beendet das Programm ohne eine Auswertung.")
Repeat
EventID = WaitWindowEvent()
Select EventID
Case #PB_Event_Gadget
Select EventGadgetID()
Case 1 : Gosub FEL51
Case 2 : Gosub FEL52
Case 3 : Gosub FEL55
Case 4 : Gosub FEL54
Case 5 : Gosub FEL55
Case 6 : Gosub FEL56
Case 7 : Gosub FEL57
Case 8 : Gosub FEL58
Case 9 : Gosub Fine
EndSelect
EndSelect
Until EventID = #PB_Event_CloseWindow
If EventID = #PB_Event_CloseWindow
Gosub Fine
EndIf
;}
FEL51:
;{ Vorgaben
CloseWindow(0)
Endung = "BD6"
Faktor1 = 115 ; Datum und Uhrzeit
Faktor2 = 100 ; Seriennummer
Faktor3 = 187 ; Auftragsnummer
Ordner = "D:\Auswertung\52019042_msc\"
FEL = "FEL51"
DirectoryHP = "/var/hp3070/qm/logdata/testerq_e+h/52019042_msc"
Gosub Weiter
Return
;}
FEL52:
;{ Vorgaben
CloseWindow(0)
Endung = "BD6"
Faktor1 = 115 ; Datum und Uhrzeit
Faktor2 = 100 ; Seriennummer
Faktor3 = 203 ; Auftragsnummer
Ordner = "D:\Auswertung\52019043_msc\"
FEL = "FEL52"
DirectoryHP = "/var/hp3070/qm/logdata/testerq_e+h/52019043_msc"
Gosub Weiter
Return
;}
FEL54:
;{ Vorgaben
CloseWindow(0)
Endung = "BD6"
Faktor1 = 114 ; Datum und Uhrzeit
Faktor2 = 99 ; Seriennummer
Faktor3 = 202 ; Auftragsnummer
Ordner = "D:\Auswertung\52019044_msc\"
FEL = "FEL54"
DirectoryHP = "/var/hp3070/qm/logdata/testerq_e+h/52019044_msc"
Gosub Weiter
Return
;}
FEL55:
;{ Vorgaben
CloseWindow(0)
Endung = "BD6"
Faktor1 = 0 ; Datum und Uhrzeit
Faktor2 = 0 ; Seriennummer
Faktor3 = 0 ; Auftragsnummer
Ordner = "D:\Auswertung\52019045_msc\"
FEL = "FEL55"
DirectoryHP = "/var/hp3070/qm/logdata/testerq_e+h/51019045_msc"
Gosub Weiter
Return
;}
FEL56:
;{ Vorgaben
CloseWindow(0)
Endung = "BC4"
Faktor1 = 114 ; Datum und Uhrzeit
Faktor2 = 99 ; Seriennummer
Faktor3 = 202 ; Auftragsnummer
Ordner = "D:\Auswertung\52020891_msc\"
FEL = "FEL56"
DirectoryHP = "/var/hp3070/qm/logdata/testerq_e+h/52020891_msc"
Gosub Weiter
Return
;}
FEL57:
;{ Vorgaben
CloseWindow(0)
Endung = "BC4"
Faktor1 = 115 ; Datum und Uhrzeit
Faktor2 = 100 ; Seriennummer
Faktor3 = 187 ; Auftragsnummer
Ordner = "D:\Auswertung\52020892_msc\"
FEL = "FEL57"
DirectoryHP = "/var/hp3070/qm/logdata/testerq_e+h/52020892_msc"
Gosub Weiter
Return
;}
FEL58:
;{ Vorgaben
CloseWindow(0)
Endung = "BC4"
Faktor1 = 114 ; Datum und Uhrzeit
Faktor2 = 99 ; Seriennummer
Faktor3 = 205 ; Auftragsnummer
Ordner = "D:\Auswertung\52020893_msc\"
FEL = "FEL58"
DirectoryHP = "/var/hp3070/qm/logdata/testerq_e+h/52020893_msc"
Gosub Weiter
Return
;}
Weiter:
If DeleteDirectory(Ordner, "*.*")
EndIf
If CreateDirectory(Ordner)
EndIf
;{ FTP Verbindung aufbauen / schliessen und Dateien kopieren | zu hause anders als sonst
Procedure.l FTPInit()
ProcedureReturn InternetOpen_("FTP",1,"","",0)
EndProcedure
Procedure.l FTPConnect(hInternet,Server.s,User.s,Password.s,Port.l)
ProcedureReturn InternetConnect_(hInternet,Server,Port,User,Password,1,0,0)
EndProcedure
Procedure.l FTPSetDir(hConnect.l,Dir.s)
ProcedureReturn FtpSetCurrentDirectory_(hConnect,Dir)
EndProcedure
Procedure.l FTPDownload(hConnect.l,Source.s,Dest.s)
ProcedureReturn FtpGetFile_(hConnect,Source,Dest,0,0,0,0)
EndProcedure
Procedure.l FTPClose(hInternet.l)
ProcedureReturn InternetCloseHandle_(hInternet)
EndProcedure
;{ Dateien zählen für ProgressBar
hInternet=FTPInit()
If hInternet
hConnect=FTPConnect(hInternet,"HP3070","user1","jochen1",21)
If hConnect
FTPSetDir(hConnect,DirectoryHP)
hFind=FtpFindFirstFile_(hConnect,"*.*",@FTPFile.WIN32_FIND_DATA,0,0)
If hFind
Find=1
File.s = PeekS(@FTPFile\cFileName)
DA = DA + 1
While Find
Find=InternetFindNextFile_(hFind,@FTPFile)
If Find
DA = DA + 1
EndIf
Wend
EndIf
EndIf
EndIf
;}
;{ Dateien kopieren
hInternet=FTPInit()
If hInternet
hConnect=FTPConnect(hInternet,"HP3070","passwort","benutzer",21)
If hConnect
FTPSetDir(hConnect,DirectoryHP)
If OpenWindow(2,0,0,610,90,#PB_Window_SystemMenu|#PB_Window_ScreenCentered ,"Kopiere und lese die Prüfdateien von " + FEL) And CreateGadgetList(WindowID(2))
TextGadget (0, 10, 10, 250, 20, "Die Dateien werden von der HP3070 kopiert.",#PB_Text_Center)
ProgressBarGadget(1, 10, 40, 250, 20, 0,DA.l, #PB_ProgressBar_Smooth)
TextGadget (2, 300, 10, 250, 20, "Die Dateien werden gelesen.",#PB_Text_Center)
ProgressBarGadget(3, 320, 40, 250, 20, 0,DA.l, #PB_ProgressBar_Smooth)
SetGadgetState (3, 0)
EndIf
hFind=FtpFindFirstFile_(hConnect,"*.*",@FTPFile.WIN32_FIND_DATA,0,0)
If hFind
Find=1
File = PeekS(@FTPFile\cFileName)
FTPDownload(hConnect, File, Ordner + File)
While Find
Find=InternetFindNextFile_(hFind,@FTPFile)
If Find
File = PeekS(@FTPFile\cFileName)
FTPDownload(hConnect, File.s, Ordner + File)
UseWindow(2)
TextGadget (0, 10, 10, 250, 20, "Die Dateien werden von der HP3070 kopiert.",#PB_Text_Center)
ProgressBarGadget(1, 10, 40, 250, 20, 0,DA, #PB_ProgressBar_Smooth)
TextGadget (2, 300, 10, 250, 20, "Danach werden die Dateien gelesen.",#PB_Text_Center)
ProgressBarGadget(3, 320, 40, 250, 20, 0,DA, #PB_ProgressBar_Smooth)
DAZ = DAZ + 1
If WindowEvent() = #PB_Event_CloseWindow
If MessageRequester("Auswertung abgebrochen", "Der Benutzer hat die Auswertung vorzeitig abgebrochen.")
EndIf
Gosub Fine
EndIf
EndIf
SetGadgetState (1, DAZ)
Wend
EndIf
EndIf
EndIf
;}
;}
UseWindow(2)
TextGadget (0, 10, 10, 250, 20, "Die Dateien wurden erfolgreich kopiert.",#PB_Text_Center)
TextGadget (2, 300, 10, 250, 20, "Die Dateien werden gelesen.",#PB_Text_Center)
SetGadgetState (1, DAZ)
If ExamineDirectory(0, Ordner, "*.*")
Else
CloseWindow(2)
MessageRequester("Fehler beim Auswerten von " + FEL, "Konnte den Ordner " + Ordner + " nicht finden." + Chr(10) + Chr(10)+ "Das Programm wird beendet.")
Gosub Fine
EndIf
Repeat
;{ eigentliches Auslesen
Name = NextDirectoryEntry()
If Name = 2
Name = NextDirectoryEntry()
Gosub Ordner
EndIf
If Name = 0
Gosub Ende
EndIf
DateiName$ = DirectoryEntryName()
Size1 = FileSize(Ordner + DateiName$)
If Name = 1
ReadFile(2, Ordner + DateiName$)
Pruefergebnis = "Pass"
;-Auslesen aus der Datei
FileSeek(Faktor1)
DAUH = ReadString()
FileSeek(Faktor2)
Seriennummer = ReadString()
FileSeek(Faktor3)
Auftragsnummer = ReadString()
;-Prüfen ob Datei Fail enthält
FileSeek(0)
Repeat
Teil = ReadString()
Laenge = Len(Teil)
Suche = FindString(Teil, "RPT", 0)
If Suche = 0
If Laenge > 0
Position = Position + Laenge
Else
Position + 1
EndIf
Else
Position = Eof(2)
Pruefergebnis = "Fail"
EndIf
Until Eof(2)
;}
;-Auftragsnummer1 und Seriennummer1 einkürzen; Datum aufteilen zum besseren Verständnis
;{ Kürzungen
ANR.s = Mid(Auftragsnummer, 1, 2)
If ANR = "60"
Auftragsnummer1 = Mid(Auftragsnummer, 1, 8)
Else
TA.l = CountList(LPLPass())
If TA > 0
FirstElement(LPLPass())
Auftragsnummer1 = LPLPass()\Auftragsnummer
Else
Auftragsnummer1 = "Fehler"
EndIf
EndIf
Seriennummer1 = Mid(Seriennummer, 1, 11)
Tag = Mid(DAUH, 5 ,2)
Monat = Mid(DAUH, 3 ,2)
Jahr = Mid(DAUH, 1 ,2)
Stunde = Mid(DAUH, 7 ,2)
Minute = Mid(DAUH, 9 ,2)
Sekunde = Mid(DAUH, 11 ,2)
ReeleNr = Mid(Seriennummer1, 3 ,4)
r1 = Mid(Seriennummer1, 0 ,2)
r2 = Mid(Seriennummer1, 7 ,5)
Size = Size1 / 1024
Zeitcode1s = Mid(DateiName$, 11 ,2)
Zeitcode1m = Mid(DateiName$, 9 ,2)
Zeitcode1h = Mid(DateiName$, 7 ,2)
Zeitcode2s = Mid(DAUH, 11 ,2)
Zeitcode2m = Mid(DAUH, 9 ,2)
Zeitcode2h = Mid(DAUH, 7 ,2)
Zeitcode = (3600 * Val(Zeitcode1h.s) + 60 * Val(Zeitcode1m.s) + Val(Zeitcode1s.s)+1) - (3600 * Val(Zeitcode2h.s) + 60 * Val(Zeitcode2m.s) + Val(Zeitcode2s.s))
Zeiten = Zeiten + Zeitcode
;}
;-Prüfen ob Seriennummer stimmt
Endung1 = Mid(Seriennummer1, 9, 3)
;{ Endung prüfen
If Endung = Endung1
Gosub klar
Else
If Endung = "_01"
Gosub klar
Else
If Endung = "_02"
Gosub klar
Else
If Endung = "_03"
Gosub klar
Else
If Endung = "_04"
Gosub klar
Else
If Endung = "_05"
Gosub klar
Else
If Endung = "_06"
Gosub klar
Else
If Endung = "_07"
Gosub klar
Else
If Endung = "_08"
Gosub klar
Else
FileSeek(0)
Repeat
Teil1 = ReadString()
Laenge1 = Len(Teil1)
Suche1 = FindString(Teil1, Endung, 0)
Endung1 = Mid(Teil1, Suche1, 3)
If Endung1 = Endung
Test1 = Mid(Teil1, Suche1 - 8, 11)
Seriennummer1 = Test1
Else
If Suche1 = 0
If Laenge > 0
Position1.l = Position1 + Laenge
Else
Position + 1
EndIf
Else
Test1.s = Mid(Teil1, 17, 11)
Seriennummer1 = Test1
EndIf
EndIf
Until Eof(2)
EndIf
EndIf
EndIf
EndIf
EndIf
EndIf
EndIf
EndIf
EndIf
CloseFile(2)
;}
;- Mittel-String von der Seriennummer umwandeln in eine Zahl
klar:
split1 = Mid(ReeleNr, 1, 1)
split2 = Mid(ReeleNr, 2, 1)
split3 = Mid(ReeleNr, 3, 1)
split4 = Mid(ReeleNr, 4, 1)
;{ Manuelles umrechnen von Hex in Dez
; 1. Stelle
If split1 = "0"
Ergebnis1 = 0
EndIf
If split1 = "1"
Ergebnis1 = 1
EndIf
If split1 = "2"
Ergebnis1 = 2
EndIf
If split1 = "3"
Ergebnis1 = 3
EndIf
If split1 = "4"
Ergebnis1 = 4
EndIf
If split1 = "5"
Ergebnis1 = 5
EndIf
If split1 = "6"
Ergebnis1 = 6
EndIf
If split1 = "7"
Ergebnis1 = 7
EndIf
If split1 = "8"
Ergebnis1 = 8
EndIf
If split1 = "9"
Ergebnis1 = 9
EndIf
If split1 = "A"
Ergebnis1 = 10
EndIf
If split1 = "B"
Ergebnis1 = 11
EndIf
If split1 = "C"
Ergebnis1 = 12
EndIf
If split1 = "D"
Ergebnis1 = 13
EndIf
If split1 = "E"
Ergebnis1 = 14
EndIf
If split1 = "F"
Ergebnis1 = 15
EndIf
; 2. Stelle
If split2 = "0"
Ergebnis2 = 0
EndIf
If split2 = "1"
Ergebnis2 = 1
EndIf
If split2 = "2"
Ergebnis2 = 2
EndIf
If split2 = "3"
Ergebnis2 = 3
EndIf
If split2 = "4"
Ergebnis2 = 4
EndIf
If split2 = "5"
Ergebnis2 = 5
EndIf
If split2 = "6"
Ergebnis2 = 6
EndIf
If split2 = "7"
Ergebnis2 = 7
EndIf
If split2 = "8"
Ergebnis2 = 8
EndIf
If split2 = "9"
Ergebnis2 = 9
EndIf
If split2 = "A"
Ergebnis2 = 10
EndIf
If split2 = "B"
Ergebnis2 = 11
EndIf
If split2 = "C"
Ergebnis2 = 12
EndIf
If split2 = "D"
Ergebnis2 = 13
EndIf
If split2 = "E"
Ergebnis2 = 14
EndIf
If split2 = "F"
Ergebnis2 = 15
EndIf
; 3. Stelle
If split3 = "0"
Ergebnis3 = 0
EndIf
If split3 = "1"
Ergebnis3 = 1
EndIf
If split3 = "2"
Ergebnis3 = 2
EndIf
If split3 = "3"
Ergebnis3 = 3
EndIf
If split3 = "4"
Ergebnis3 = 4
EndIf
If split3 = "5"
Ergebnis3 = 5
EndIf
If split3 = "6"
Ergebnis3 = 6
EndIf
If split3 = "7"
Ergebnis3 = 7
EndIf
If split3 = "8"
Ergebnis3 = 8
EndIf
If split3 = "9"
Ergebnis3 = 9
EndIf
If split3 = "A"
Ergebnis3 = 10
EndIf
If split3 = "B"
Ergebnis3 = 11
EndIf
If split3 = "C"
Ergebnis3 = 12
EndIf
If split3 = "D"
Ergebnis3 = 13
EndIf
If split3 = "E"
Ergebnis3 = 14
EndIf
If split3 = "F"
Ergebnis3 = 15
EndIf
; 4. Stelle
If split4 = "0"
Ergebnis4 = 0
EndIf
If split4 = "1"
Ergebnis4 = 1
EndIf
If split4 = "2"
Ergebnis4 = 2
EndIf
If split4 = "3"
Ergebnis4 = 3
EndIf
If split4 = "4"
Ergebnis4 = 4
EndIf
If split4 = "5"
Ergebnis4 = 5
EndIf
If split4 = "6"
Ergebnis4 = 6
EndIf
If split4 = "7"
Ergebnis4 = 7
EndIf
If split4 = "8"
Ergebnis4 = 8
EndIf
If split4 = "9"
Ergebnis4 = 9
EndIf
If split4 = "A"
Ergebnis4 = 10
EndIf
If split4 = "B"
Ergebnis4 = 11
EndIf
If split4 = "C"
Ergebnis4 = 12
EndIf
If split4 = "D"
Ergebnis4 = 13
EndIf
If split4 = "E"
Ergebnis4 = 14
EndIf
If split4 = "F"
Ergebnis4 = 15
EndIf
ReeleNr1.l = 4096 * Ergebnis1 + 256 * Ergebnis2 + 16 * Ergebnis3 + 1 * Ergebnis4
;}
;{ aufteilen der Lpl mit Versuche zählen
;-aufteilen der Lpl nach Pass und Fail mit Versuche zählen
If Pruefergebnis = "Fail"
ResetList(LPLFail())
While NextElement(LPLFail())
If Seriennummer1 = LPLFail()\Seriennummer
LPLFail()\Versuche = LPLFail()\Versuche + 1
EndIf
Wend
AddElement(LPLFail())
LPLFail()\Seriennummer = Seriennummer1
LPLFail()\Datum = Tag + "." + Monat+ "." + Jahr
LPLFail()\Uhrzeit = Stunde + ":" + Minute + ":" + Sekunde
LPLFail()\Pruefergebnis = Pruefergebnis
LPLFail()\Auftragsnummer = Auftragsnummer1
LPLFail()\Versuche = Versuche
LPLFail()\Dateiname = DateiName$
LPLFail()\ReeleNr = ReeleNr1
LPLFail()\Groesse = Size
LPLFail()\Zeit = Zeitcode
Else
ResetList(LPLPass())
While NextElement(LPLPass())
If Seriennummer1 = LPLPass()\Seriennummer
LPLPass()\Versuche = LPLPass()\Versuche + 1
If Size > LPLPass()\Groesse
MessageRequester("Achtung!", "Die Datei '" + DateiName$ + "' enthält die Seriennummer: '" + Seriennummer1 + "'." + Chr(10) + "Die Datei '" + LPLPass()\Dateiname + "' enthält die Seriennummer: '" + LPLPass()\Seriennummer + "'." + Chr(10) + Chr(10) + "Da die Seriennummern übereinstimmen und beide Dateien ein Pass enthalten," + Chr(10)+ "wird die Datei '" + LPLPass()\Dateiname + "' nicht berücksichtigt.")
DeleteElement(LPLPass(), 1)
doppeltPass = doppeltPass + 1
Else
MessageRequester("Achtung!", "Die Datei '" + Dateiname$ + "' enthält die Seriennummer: '" + Seriennummer1 + "'." + Chr(10) + "Die Datei '" + LPLPass()\Dateiname + "' enthält die Seriennummer: '" + LPLPass()\Seriennummer + "'." + Chr(10) + Chr(10) + "Da die Seriennummern übereinstimmen und beide Dateien ein Pass enthalten," + Chr(10)+ "wird die Datei '" + Dateiname$ + "' nicht berücksichtigt.")
doppeltPass = doppeltPass + 1
Gosub Er
UseWindow(2)
TextGadget (0, 10, 10, 250, 20, "Die Dateien wurden erfolgreich kopiert",#PB_Text_Center)
ProgressBarGadget(1, 10, 40, 250, 20, 0,DA.l, #PB_ProgressBar_Smooth)
TextGadget (2, 300, 10, 250, 20, "Die Dateien werden gelesen",#PB_Text_Center)
ProgressBarGadget(3, 320, 40, 250, 20, 0,DA.l, #PB_ProgressBar_Smooth)
EndIf
EndIf
Wend
AddElement(LPLPass())
LPLPass()\Seriennummer = Seriennummer1
LPLPass()\Datum = Tag + "." + Monat + "." + Jahr
LPLPass()\Uhrzeit = Stunde + ":" + Minute + ":" + Sekunde
LPLPass()\Pruefergebnis = Pruefergebnis
LPLPass()\Auftragsnummer = Auftragsnummer1
LPLPass()\Versuche = Versuche
LPLPass()\Dateiname = Dateiname$
LPLPass()\reeleNr = ReeleNr1
LPLPass()\Groesse = Size
LPLPass()\Zeit = Zeitcode
EndIf
EndIf
;}
Er:
;{ ins Statusfenster schreiben
Delay(10)
UseWindow(2)
ProgressBarGadget(3, 320, 40, 250, 20, 0,DA, #PB_ProgressBar_Smooth)
SetGadgetState (3, DAZ1)
DAZ1 = DAZ1 + 1
If WindowEvent() = #PB_Event_CloseWindow
If MessageRequester("Auswertung abgebrochen", "Der Benutzer hat die Auswertung vorzeitig abgebrochen.")
EndIf
Gosub Fine
EndIf
;}
; gehört alles noch zum auslesen
Ordner:
Until Name = 0
Return
Ende:
;{ LPLFail mit LPLPass vergleichen und LPLFail mit LPLPass gleichsetzen Hier geändert
;LPLFail mit LPLPass vergleichen
ResetList(LPLFail())
While NextElement(LPLFail())
ResetList(LPLPass())
While NextElement(LPLPass())
If LPLFail()\Seriennummer = LPLPass()\Seriennummer
LPLPass()\Versuche = LPLPass()\Versuche + 1
LPLFail()\dochgut = LPLFail()\dochgut + 1
EndIf
Wend
Wend
;LPLFail mit LPLPass gleichsetzen
ResetList(LPLPass())
While NextElement(LPLPass())
ResetList(LPLFail())
While NextElement(LPLFail())
If LPLPass()\Seriennummer = LPLFail()\Seriennummer
LPLFail()\Versuche = LPLPass()\Versuche
EndIf
Wend
Wend
ResetList(LPLFail())
While NextElement(LPLFail())
If LPLFail()\dochgut = 0
AddElement(LPLFehler())
LPLFehler()\Seriennummer = LPLFail()\Seriennummer
LPLFehler()\Datum = LPLFail()\Datum
LPLFehler()\Uhrzeit = LPLFail()\Uhrzeit
LPLFehler()\Pruefergebnis = LPLFail()\Pruefergebnis
LPLFehler()\Auftragsnummer = LPLFail()\Auftragsnummer
LPLFehler()\Versuche = LPLFail()\Versuche
LPLFehler()\Dateiname = LPLFail()\Dateiname
LPLFehler()\reeleNr = LPLFail()\reeleNr
LPLFehler()\Groesse = LPLFail()\Groesse
LPLFehler()\Zeit = LPLFail()\Zeit
DeleteElement(LPLFail())
EndIf
Wend
ResetList(LPLFehler())
While NextElement(LPLFehler())
AddElement(LPLFehlerfiktiv())
LPLFehlerfiktiv()\Seriennummer = LPLFehler()\Seriennummer
LPLFehlerfiktiv()\Versuche = LPLFehler()\Versuche
Wend
; Versuche zählen ohne Pass
ResetList(LPLFehler())
While NextElement(LPLFehler())
ResetList(LPLFehlerfiktiv())
While NextElement(LPLFehlerFiktiv())
If LPLFehler()\Seriennummer = LPLFehlerfiktiv()\Seriennummer
If LPLFehler()\Versuche > LPLFehlerfiktiv()\Versuche
LPLFehlerfiktiv()\Versuche = LPLFehler()\Versuche
Else
LPLFehler()\Versuche = LPLFehlerfiktiv()\Versuche
EndIf
EndIf
Wend
Wend
SortStructuredList(LPLFehler(), 0, OffsetOf(daten\Seriennummer), #PB_Sort_String)
SortStructuredList(LPLFehlerfiktiv(), 0, OffsetOf(daten\Seriennummer), #PB_Sort_String)
ResetList(LPLFehler())
While NextElement(LPLFehler())
ResetList(LPLFehlerfiktiv())
While NextElement(LPLFehlerFiktiv())
If LPLFehler()\Seriennummer = LPLFehlerfiktiv()\Seriennummer
teste.l = NextElement(LPLFehlerFiktiv())
;PreviousElement(LPLFehler())
If teste = 0
;Gosub Schoen
Else
If LPLFehler()\Seriennummer = LPLFehlerfiktiv()\Seriennummer
DeleteElement(LPLFehlerFiktiv())
PreviousElement(LPLFehlerfiktiv())
EndIf
EndIf
EndIf
Wend
Wend
Schoen:
;}
;Statusfenster schliessen
CloseWindow(2)
;-Einrichten des Fenster mit Sortierfunktion
;{ Sortierfunktionen für das Ausgabefenster
Procedure CreateListIconArrows(StartImage)
; generate 2 small 16x16 arrows, up & down
For img = 0 To 1
CreateImage(StartImage+img,16,16)
StartDrawing(ImageOutput())
background = GetSysColor_(#COLOR_BTNFACE)
FrontColor(Red(background),Green(background),Blue(background))
Box(0,0,16,16)
If img = 0 : start=7 : Else : start = 2 : EndIf
For a = 6 To 10
Line(start,a,13-start*2,0,0)
start+1
Next a
StopDrawing()
Next
EndProcedure
Procedure AddListIconColumn(Gadget,pos,width,align,text$,hImage)
; Add column to ListIconGadget
;
; gadget = the PB gadget number
; pos = position of the new column
; width = with of the new column
; align = align of the text in the column:
; #LI_CENTERED, #LI_LEFT, #LI_RIGHT
; text$ = column header text
; hImage = image handle __OR__ index of already added image!
;
#LVCF_IMAGE = $10
#LVCFMT_COL_HAS_IMAGES = $8000
#LI_CENTERED = #LVCFMT_CENTER
#LI_LEFT = #LVCFMT_LEFT
#LI_RIGHT = #LVCFMT_RIGHT
Structure LVCOLUMN
lv.LV_COLUMN
iImage.l
iOrder.l
EndStructure
If GetObjectType_(hImage)=#OBJ_BITMAP
; Add Image to List
hImgL = SendMessage_(GadgetID(Gadget),#LVM_GETIMAGELIST,#LVSIL_SMALL,0)
If hImgL=0
hImgL = ImageList_Create_(16,16,#ILC_COLOR32,1,1)
SendMessage_(GadgetID(Gadget),#LVM_SETIMAGELIST,#LVSIL_SMALL,hImgL)
EndIf
idx = ImageList_Add_(hImgL,hImage,0)
Else
; was an index
idx = hImage
EndIf
LVC.LVCOLUMN
LVC\lv\mask = #LVCF_IMAGE|#LVCF_TEXT|#LVCF_WIDTH|#LVCF_FMT
LVC\lv\fmt = align|#LVCFMT_COL_HAS_IMAGES
LVC\lv\pszText = @text$
LVC\lv\cchTextMax = Len(text$)
LVC\lv\iSubItem = pos
LVC\lv\cx = width
LVC\iImage = idx
LVC\iOrder = pos
SendMessage_(GadgetID(gadget),#LVM_INSERTCOLUMN,pos,@LVC)
EndProcedure
Procedure GetListIconColumnImage(Gadget,column)
; returns the image_index of the column-header-image
LVC.LVCOLUMN
LVC\lv\mask = #LVCF_IMAGE
SendMessage_(GadgetID(Gadget),#LVM_GETCOLUMN,column,@LVC)
ProcedureReturn LVC\iImage
EndProcedure
Procedure ChangeListIconColumnImage(Gadget,column,Image_Index)
; change the image_index of the column-header-image
LVC.LVCOLUMN
LVC\lv\mask = #LVCF_IMAGE
LVC\iImage = Image_Index
ProcedureReturn SendMessage_(GadgetID(Gadget),#LVM_SETCOLUMN,column,@LVC)
EndProcedure
Procedure SetListIconColumnText(Gadget,index,text$)
; change column header text
LVC.LV_COLUMN
LVC\mask = #LVCF_TEXT
LVC\pszText = @text$
SendMessage_(GadgetID(Gadget),#LVM_SETCOLUMN,index,@LVC)
EndProcedure
Procedure SetListIconColumnWidth(Gadget,index,new_width)
; change column header width
SendMessage_(GadgetID(Gadget),#LVM_SETCOLUMNWIDTH,index,new_width)
EndProcedure
Procedure SetListIconColumnFormat(Gadget,index,format)
; change text alignment for columns
LVC.LV_COLUMN
LVC\mask = #LVCF_FMT
Select format
Case 0: LVC\fmt = #LVCFMT_LEFT
Case 1: LVC\fmt = #LVCFMT_CENTER
Case 2: LVC\fmt = #LVCFMT_RIGHT
EndSelect
SendMessage_(GadgetID(Gadget),#LVM_SETCOLUMN,index,@LVC)
EndProcedure
Procedure UpdatelParam(ListIconGadget,columns)
ItemCount = SendMessage_(ListIconGadget, #LVM_GETITEMCOUNT, 0, 0)
lvi.LV_ITEM
lvi\mask = #LVIF_PARAM
lvi\iItem = 0
While ItemCount>0
lvi\lParam = lvi\iItem
For SubItem = 0 To columns-1
lvi\iSubItem = SubItem
SendMessage_(ListIconGadget, #LVM_SETITEM, 0, @lvi)
Next SubItem
lvi\iItem +1
ItemCount -1
Wend
EndProcedure
Procedure ListIconSortFunction(lParam1,lParam2,lParamSort)
A$ = Space(200)
B$ = Space(200)
result = 0
lvi.LV_ITEM
lvi\iSubItem = lParamSort&$FFFF
lvi\pszText = @A$
lvi\cchTextMax = 200
lvi\mask = #LVIF_TEXT
SendMessage_(GadgetID(0), #LVM_GETITEMTEXT,lParam1,@lvi)
lvi\pszText = @B$
SendMessage_(GadgetID(0), #LVM_GETITEMTEXT,lParam2,@lvi)
If A$ = B$
ProcedureReturn 0 ; equal
EndIf
x = (lParamSort>>16)&$FFFF
If x
If A$ > B$
ProcedureReturn 1
Else
ProcedureReturn -1
EndIf
Else
If A$ > B$
ProcedureReturn -1
Else
ProcedureReturn 1
EndIf
EndIf
ProcedureReturn result
EndProcedure
; Window Callback
Procedure WinProc(hWnd,Msg,wParam,lParam)
result = #PB_ProcessPureBasicEvents
Select Msg
Case #WM_NOTIFY
*NMHDR.NMHDR = lParam
If *NMHDR\hWndFrom = GadgetID(0) ; comes from our ListIconGadget
If *NMHDR\code = #LVN_COLUMNCLICK
*NMLV.NMLISTVIEW = lParam
column = *NMLV\iSubItem
; switch images:
index = GetListIconColumnImage(0,column)
ChangeListIconColumnImage(0,column,index!1)
; sort
SendMessage_(GadgetID(0),#LVM_SORTITEMS,column|((index)<<16),@ListIconSortFunction())
UpdatelParam(GadgetID(0),5)
EndIf
EndIf
EndSelect
ProcedureReturn result
EndProcedure
;program start
CreateListIconArrows(0)
;}
NS:
;{ Ausgabe in Fenster Hier geändert
;Zählen der guten und schlechten LPL
LPLPass = CountList(LPLPass())
LPLFail = CountList(LPLFail())
LPLFehler = CountList(LPLFehler())
Tester = CountList(LPLFehlerfiktiv())
If OpenWindow(0,57,0,910,709,#PB_Window_SystemMenu|#PB_Window_MinimizeGadget,"Die Stunde der Wahrheit für " + FEL + " mit der Auftragsnummer "+ Auftragsnummer1)
SetWindowCallback(@WinProc())
CreateGadgetList(WindowID())
;Liste mit Fail die auf jeden Fall ein Pass haben und direktes Pass
ListIconGadget (0,5,50,900,365,"Gute LPL",0,#PB_ListIcon_FullRowSelect|#PB_ListIcon_AlwaysShowSelection|#PB_ListIcon_GridLines|#PB_ListIcon_HeaderDragDrop|#PB_ListIcon_MultiSelect )
AddListIconColumn(0,1,109,#LI_RIGHT,"Seriennummer",UseImage(0)) ; add Image 0
AddListIconColumn(0,2,119,#LI_CENTERED, "Datum & Uhrzeit",UseImage(1)) ; add Image 1
AddListIconColumn(0,3,119,#LI_CENTERED, "Prüfergebnis",1) ; use Image index 0
AddListIconColumn(0,4, 89,#LI_CENTERED, "Versuche",1) ; use Image index 1
AddListIconColumn(0,5,124,#LI_CENTERED, "Auftragsnummer",1)
AddListIconColumn(0,6,129,#LI_RIGHT , "Dateinname",1)
AddListIconColumn(0,7, 95,#LI_CENTERED, "Dateigröße",1)
AddListIconColumn(0,8, 95,#LI_CENTERED, "Laufzeit",1)
If CreateStatusBar(0, WindowID(0))
AddStatusBarField(150)
AddStatusBarField(160)
AddStatusBarField(150)
AddStatusBarField(120)
AddStatusBarField(265)
AddStatusBarField(175)
StatusBarText(0,0, "Laufzeit gesamt: " + StrF(Zeiten / 3600, 2) + " h", #PB_StatusBar_Center )
StatusBarText(0,1, "mittlere Laufzeit: " + StrF(Zeiten / (LPLPass + LPLFail + LPLFehler), 2)+ " sek", #PB_StatusBar_Center)
StatusBarText(0,2, "Dateien gesamt: " + Str(LPLPass + LPLFail + LPLFehler), #PB_StatusBar_Center )
StatusBarText(0,3, "Ausfall: " + StrF( 100 / (LPLPass + LPLFail) * LPLFail, 2) + " %", #PB_StatusBar_Center)
StatusBarText(0,4, "Mehrfaches Pass für die gleiche Seriennummer: " + Str(doppeltPass), #PB_StatusBar_Center)
StatusBarText(0,5, "")
EndIf
;Buttons und Texte
TextGadget (2, 20, 20, 120, 20, "Anzahl der LPL mit Pass:")
TextGadget (3, 365, 20, 350, 20, "Anzahl der mehrfachen Versuche die mit einem Pass geendet haben:")
TextGadget (4, 20, 505, 180, 20, "Anzahl der LPL ohne Pass:")
ButtonGadget (5, 20, 427, 100, 30, "Speichern")
If s = 1
DisableGadget(5, 1)
EndIf
ButtonGadget (6, 130, 427, 200, 30, "Fehlende Seriennummer berechnen")
ButtonGadget (7, 340, 427, 100, 30, "Beenden")
If LPLFehler > 0
TextGadget (8, 320, 485, 580, 80, "Die Seriennummer(n) in der unteren Liste wurden zwar geprüft haben aber keine Datei mit Pass. Wenn die LPL noch repariert bzw. verschrottet wird ist es kein Problem. Auf keinen Fall darf die LPL in einer Kiste sein die zu e+h geschickt wird, in diesem Fall viel Spaß beim suchen.")
Else
TextGadget (8, 320, 490, 580, 80, "Die grüne Zahl muss mit der Stückzahl des Auftrags übereinstimmen, dann ist alles in Ordnung, der Auftrag wurde vollständig geprüft. Wenn die Zahlen nicht übereinstimmen, wurde eine oder mehrere LPL nicht geprüft. Diese gilt es dann zu finden.")
EndIf
GadgetToolTip (0, "Dies ist eine Auflistung von allen Dateien mit FAIL und PASS")
GadgetToolTip (5, "Speichert die wichtigen Daten unter D:\Archiv\" + FEL + "\" + Auftragsnummer1)
GadgetToolTip (6, "Berechnet die fehlende(n) Seriennummer(n).")
GadgetToolTip (7, "Beendet die Anwendung.")
;Liste nur mit Fail ohne Pass
; If LPLFehler > 0
ListIconGadget (1,5,540,900,150,"Schlechte LPL",0,#PB_ListIcon_FullRowSelect|#PB_ListIcon_AlwaysShowSelection|#PB_ListIcon_GridLines|#PB_ListIcon_HeaderDragDrop|#PB_ListIcon_MultiSelect)
AddListIconColumn(1,1,109,#LI_RIGHT,"Seriennummer",UseImage(1)) ; add Image 0
AddListIconColumn(1,2,119,#LI_CENTERED, "Datum & Uhrzeit",UseImage(1)) ; add Image 1
AddListIconColumn(1,3,119,#LI_CENTERED, "Prüfergebnis",1)
AddListIconColumn(1,4, 89,#LI_CENTERED, "Versuche",1) ; use Image index 1
AddListIconColumn(1,5,124,#LI_CENTERED, "Auftragsnummer",1)
AddListIconColumn(1,6,129,#LI_RIGHT , "Dateinname",1)
AddlistIconColumn(1,7, 95,#LI_CENTERED, "Dateigröße",1)
Addlisticoncolumn(1,8, 95,#LI_CENTERED, "Laufzeit",1)
GadgetToolTip (1, "Für diese Leiterplatten gibt es keine Datei mit Pass.")
; EndIf
EndIf
;-Ausgabe der einzelnen Lpl-Datensätze
SortStructuredList(LPLFail(), 0, OffsetOf(daten\Seriennummer), #PB_Sort_String)
ResetList(LPLFail())
While NextElement(LPLFail())
AddGadgetItem (0,0, Chr(10) + LPLFail()\Seriennummer + Chr(10) + LPLFail()\Datum + " " + LPLFail()\Uhrzeit + Chr(10) + LPLFail()\Pruefergebnis + Chr(10) + RSet(Str(LPLFail()\Versuche),2) + Chr (10) + LPLFail()\Auftragsnummer + Chr(10) + LPLFail()\Dateiname + Chr(10) + RSet(StrF(LPLFail()\Groesse, 2), 5) + " kb" + Chr(10) + RSet(Str(LPLFail()\Zeit), 2) + " sek")
Wend
SortStructuredList(LPLPass(), 0, OffsetOf(daten\Seriennummer), #PB_Sort_String)
ResetList(LPLPass())
While NextElement(LPLPass())
AddGadgetItem (0,0, Chr(10) + LPLPass()\Seriennummer + Chr(10) + LPLPass()\Datum + " " + LPLPass()\Uhrzeit + Chr(10) + LPLPass()\Pruefergebnis + Chr(10) + RSet(Str(LPLPass()\Versuche),2) + Chr (10) + LPLPass()\Auftragsnummer + Chr(10) + LPLPass()\Dateiname + Chr(10) + RSet(StrF(LPLPass()\Groesse, 2), 5) + " kb" + Chr(10) + RSet(Str(LPLPass()\Zeit), 2) + " sek")
Wend
SortStructuredList(LPLFehler(), 0, OffsetOf(daten\Seriennummer), #PB_Sort_String)
ResetList(LPLFehler())
While NextElement(LPLFehler())
AddGadgetItem (1,0, Chr(10) + LPLFehler()\Seriennummer + Chr(10) + LPLFehler()\Datum + " " + LPLFehler()\Uhrzeit + Chr(10) + LPLFehler()\Pruefergebnis + Chr(10) + RSet(Str(LPLFehler()\Versuche),2) + Chr (10) + LPLFehler()\Auftragsnummer + Chr(10) + LPLFehler()\Dateiname + Chr(10) + RSet(StrF(LPLFehler()\Groesse, 2), 5) + " kb" + Chr(10) + RSet(Str(LPLFehler()\Zeit),2) + " sek")
Wend
Repeat
;-Zeichnen der guten und schlechten Anzahl
LoadFont (1, "Arial", 35, #PB_Font_Bold)
LoadFont (2, "Arial", 30, #PB_Font_Bold|#PB_Font_Italic)
If StartDrawing(WindowOutput())
FrontColor(0,255,0)
DrawingMode(1)
DrawingFont(UseFont(1))
Locate(155, 0)
DrawText(Str(LPLPass))
FrontColor(255,180,0)
Locate(705, 0)
DrawText(Str(LPLFail))
If LPLFehler > 0
FrontColor(255,0,0)
Locate(175, 485)
DrawText(Str(tester + LPLFehler1))
Else
FrontColor(0,255,0)
Locate(175, 485)
DrawText("keine")
EndIf
DrawingFont(UseFont(2))
FrontColor(30, 28, 225)
Locate(560, 420)
DrawText("by D. Schätzle")
StopDrawing()
EndIf
EventID = WaitWindowEvent()
Select EventID
Case #PB_Event_Gadget
Select EventGadgetID()
Case 5 : Gosub Speichern
Case 6 : Gosub Berechnen
Case 7 : Gosub Fine
EndSelect
EndSelect
Until EventID = #PB_Event_CloseWindow
If EventID = #PB_Event_CloseWindow
Gosub Fine
EndIf
;}
;{ Speichern
;-Speichern
Speichern:
;CloseWindow(0)
ResetList(LPLPass())
ResetList(LPLFail())
If CreateDirectory("D:\Archiv")
EndIf
If CreateDirectory("D:\Archiv\" + FEL)
EndIf
If CreateFile(5, "D:\Archiv\" + FEL + "\"+ Auftragsnummer1 + ".txt")
WriteStringN("LPL: " + FEL + " " + "Auftragsnummer: " + Auftragsnummer1)
WriteStringN("")
WriteStringN("")
WriteStringN("LPL mit Pass: " + Str(LPLPass) + " Stück.")
WriteStringN("")
WriteStringN("Seriennummer" + Chr(9) + "Datum " + Chr(9) + "Uhrzeit " + Chr(9) + "Prüfergebnis" + Chr(9) + "Auftragsnummer")
WriteStringN("")
While NextElement(LPLPass())
WriteStringN(LPLPass()\Seriennummer + Chr(9) + LPLPass()\Datum + Chr(9) + LPLPass()\Uhrzeit + " " + Chr(9) + LPLPass()\Pruefergebnis + " " + Chr(9) + LPLPass()\Auftragsnummer)
Wend
WriteStringN("")
WriteStringN("")
WriteStringN("")
WriteStringN("")
WriteStringN("LPL mit Fail: " + Str(LPLFail) + " Stück.")
WriteStringN("")
WriteStringN("Seriennummer" + Chr(9) + "Datum " + Chr(9) + "Uhrzeit " + Chr(9) + "Prüfergebnis" + Chr(9) + "Auftragsnummer")
While NextElement(LPLFail())
WriteStringN(LPLFail()\Seriennummer + Chr(9) + LPLFail()\Datum + Chr(9) + LPLFail()\Uhrzeit + " " + Chr(9) + LPLFail()\Pruefergebnis + " " + Chr(9) + LPLFail()\Auftragsnummer)
Wend
MessageRequester("Speichern", "Datei gespeichert unter D:\Archiv\" + Fel + "\"+ Auftragsnummer1)
Else
MessageRequester("Fehlermeldung:", "Konnte Datei nicht erstellen.")
EndIf
CloseFile(5)
S = 1
Goto NS
;}
;{ Berechnen Hier geändert
CloseWindow(0)
Berechnen:
If vorbei.l = 1
MessageRequester("Schon passiert.", "Die fehlenden Seriennummern stehen in der unteren Liste.")
Gosub NS
Else
If OpenWindow(1, 250,250,200,200,#PB_Window_SystemMenu,"Wieviel?") And CreateGadgetList(WindowID(1))
TextGadget (0, 10, 10, 180, 50,"Bitte unten die Auftragsstückzahl eingeben, danach auf 'Weiter' klicken.")
StringGadget(1, 70, 80, 60, 20, Str(LPLPass + 1) ,#PB_String_Numeric)
ButtonGadget(2, 55, 155, 90, 30, "Weiter")
ButtonGadget(3, 55, 125, 90, 30, "Abbrechen")
EndIf
Eingabe = GetGadgetText(1)
Repeat
EventID = WaitWindowEvent()
Select EventID
Case #PB_Event_Gadget
Select EventGadgetID()
Case 2 : Gosub wei
Case 3 : Gosub aus
EndSelect
EndSelect
Until EventID = #PB_Event_CloseWindow
If EventID = #PB_Event_CloseWindow
CloseWindow(1)
Gosub NS
EndIf
aus :
CloseWindow(1)
MessageRequester("Abgebrochen", "Der Vorgang wurde durch den Benutzer abgebrochen.")
Gosub NS
wei:
Eingabe = GetGadgetText(1)
CloseWindow(1)
ASZ = Val(Eingabe)
If Val(Eingabe) = LPLPass
MessageRequester(Eingabe + " ? Haha?", "So geht das nicht." + Chr(10) + Chr(10) + "Deine Eingabe war gleich der Anzahl der LPL mit Pass." + Chr(10) + Chr(10) + "So kann keine Seriennummer berechnet werden, Eingabe evtl. nochmal überdenken.")
Gosub NS
EndIf
If Val(Eingabe) < LPLPass
MessageRequester(Eingabe + " ? Haha?", "So geht das nicht." + Chr(10) + Chr(10) + "Deine Eingabe war kleiner als die Anzahl der LPL mit Pass."+ Chr(10) + Chr(10) + "So kann keine Seriennummer berechnet werden, Eingabe evtl. nochmal überdenken.")
Gosub NS
EndIf
CloseWindow(1)
FirstElement(LPLPass())
FirstElement(LPLPass())
If Endung1 = Mid(LPLPass()\Seriennummer, 9,3)
Else
NextElement(LPLPass())
EndIf
start = LPLPass()\ReeleNr - 1
For eintrag = 1 To ASZ
AddElement(fiktiv())
fiktiv()\ReeleNr = start + eintrag
Next
ResetList(LPLPass())
While NextElement(LPLPass())
If Endung1 = Mid(LPLPass()\Seriennummer, 9,3)
ResetList(fiktiv())
While NextElement(fiktiv())
If LPLPass()\ReeleNr = fiktiv()\ReeleNr
DeleteElement(fiktiv())
EndIf
Wend
Else
NextElement(LPLPass())
If Endung1 = Mid(LPLPass()\Seriennummer, 9,3)
ResetList(fiktiv())
While NextElement(fiktiv())
If LPLPass()\ReeleNr = fiktiv()\ReeleNr
DeleteElement(fiktiv())
EndIf
Wend
EndIf
EndIf
Wend
ResetList(fiktiv())
LastElement(LPLPass())
While NextElement(fiktiv())
If fiktiv()\ReeleNr >= LPLPass()\ReeleNr
r3l = fiktiv()\ReeleNr
r3e = fiktiv()\ReeleNr - Val(Eingabe)
r3l1 = RSet(Hex(r3l),4,"0")
r3e1 = RSet(Hex(r3e),4,"0")
fehlendeSNRl = r1 + r3l1 + r2
fehlendeSNRe = r1 + r3e1 + r2
AddElement(LPLFehler())
LPLFehler()\Seriennummer = fehlendeSNRl
LPLFehler()\Auftragsnummer = "Achtung! Letzte Seriennummer."
AddElement(LPLFehler())
LPLFehler()\Seriennummer = fehlendeSNRe
LPLFehler()\Auftragsnummer = "Achtung! Erste Seriennummer."
Else
r3 = fiktiv()\ReeleNr
r31 = RSet(Hex(r3),4,"0")
fehlendeSNR = r1 + r31 + r2
AddElement(LPLFehler())
LPLFehler()\Seriennummer = fehlendeSNR
LPLFehler()\Auftragsnummer = "Errechnete Seriennummer."
EndIf
Wend
vorbei = 1
ClearList(fiktiv())
While NextElement(LPLFehler())
AddGadgetItem (1,0, Chr(10) + LPLFehler()\Seriennummer + Chr(10) + LPLFehler()\Datum + " " + LPLFehler()\Uhrzeit + Chr(10) + LPLFehler()\Pruefergebnis + Chr(10) + RSet(Str(LPLFehler()\Versuche),2) + Chr (10) + LPLFehler()\Auftragsnummer + Chr(10) + LPLFehler()\Dateiname + Chr(10) + RSet(StrF(LPLFehler()\Groesse, 2), 5) + " kb" + Chr(10) + RSet(Str(LPLFehler()\Zeit),2) + " sek")
Wend
MessageRequester("Erledigt", "Die errechneten Seriennumern sind in die untere Liste eingefügt worden.")
ClearList(fiktiv())
vorbei = 1
Gosub NS
EndIf
;}
Fine:
End
; IDE Options = PureBasic v3.94 (Windows - x86)
; CursorPosition = 1362
; FirstLine = 203
; Folding = AAAAAA9
; UseIcon = msgcomposeWindow.ico
; Executable = Auswertung für e+h1.exe
bobobo hat gecodetagt

Code: Alles auswählen
Zuletzt geändert von dietmar am 17.12.2005 19:17, insgesamt 1-mal geändert.
Wir leben alle unter dem gleichen Sternenhimmel, aber wir haben nicht alle den gleichen Horizont.