zuerst einmal zur Aufgabenstellung: das folgende (Windows-)Programm soll alle 5 Minuten per FTP eine txt-Datei senden, in der der Computername, Datum und Uhrzeit (und weitere Daten) drin stehen. Das funktioniert auch (fast). Auf einigen Client-Computern stürzt das Programm aber unkontrolliert ab und die dazu gehörige txt-Datei hat dann eine Größe von 0 Byte (auch auf dem FTP). Auf anderen Clients gibt es keine Probleme. Die hochgeladenen txt-Dateien werden dann auf dem Server per php ausgewertet.
Nun zu meinen Fragen: Wo könnte der Fehler für die unkontrollierten (und teilweise auch nicht reproduzierbaren) Abstürze liegen? Kann man das Ganze vielleicht (in Pure-Basic) einfacher/besser/intelligenter lösen?
Danke schonmal für Eure Mühe. Hier der Code:
Code: Alles auswählen
ftpadresse$="meineadr.dyndns.com"
ftpuser$="ich"
ftppw$="meins1234"
firma$="meine Firma"
Structure pt
x.l
y.l
EndStructure
Cursor.pt
If CreatePopupMenu(0)
MenuItem(1, "Über")
MenuItem(2, "Beenden")
EndIf
If OpenWindow(0, 100, 150, 300, 100, "SysTray Example", #PB_Window_Invisible)
IconName$ = "useronline.ico"
AddSysTrayIcon(1, WindowID(0), LoadImage(0, IconName$))
SysTrayIconToolTip(1, "Online-Status")
startzeit=Date()
InitNetwork()
Repeat
Event = WaitWindowEvent(100)
ExitMenu = 0
If Event = #PB_Event_SysTray
If EventType()=#PB_EventType_RightClick
GetCursorPos_(Cursor)
xPos=Cursor\x
yPos=Cursor\y
DisplayPopupMenu(0, WindowID(0), xPos, yPos)
Repeat
Select WaitWindowEvent()
Case #PB_Event_Menu
Select EventMenu()
Case 1 ;über
MessageRequester("System-Status", "System-Status")
ExitMenu = 1
Case 2 ;ende
If MessageRequester("Programm beenden","Möchten Sie das Programm System-Status wirklich beenden?",#PB_MessageRequester_YesNo)=#PB_MessageRequester_Yes
End
EndIf
ExitMenu = 1
EndSelect
Case #PB_Event_CloseWindow
ExitMenu = 1
EndSelect
Until ExitMenu = 1
EndIf
EndIf
If startzeit+300<Date() ;300 sekunden = 5 minuten
If ExamineEnvironmentVariables()
While NextEnvironmentVariable()
If EnvironmentVariableName() = "COMPUTERNAME"
computername$ = EnvironmentVariableValue()
EndIf
Wend
EndIf
ftpdatei$=""
For x=1 To Len(computername$)
If (Asc(Mid(computername$,x,1))>47 And Asc(Mid(computername$,x,1))<58) Or (Asc(Mid(computername$,x,1))>64 And Asc(Mid(computername$,x,1))<91) Or (Asc(Mid(computername$,x,1))>96 And Asc(Mid(computername$,x,1))<123)
ftpdatei$=ftpdatei$+Mid(computername$,x,1)
EndIf
Next
ftpdatei$=LCase(Left(firma$,4)+ftpdatei$)+".txt"
meineip$="123.456.789.123"
meindatum$=FormatDate("%dd.%mm.%yyyy",Date())
meinezeit$=FormatDate("%hh:%ii:%ss",Date())
If CreateFile(0, ftpdatei$)
WriteString(0,computername$+";"+meineip$+";"+meindatum$+";"+meinezeit$+";"+firma$,#PB_Ascii)
CloseFile(0)
If OpenFTP(0, ftpadresse$, ftpuser$, ftppw$)
Result = SendFTPFile(0, ftpdatei$, ftpdatei$, 1)
CloseFTP(0)
EndIf
EndIf
startzeit=Date()
EndIf
Until Event = #PB_Event_CloseWindow
EndIf
danke und Gruß