Ich habe in meinem aktuellen project nen sehr komsichen fehler und ich komm nich dahinter wieso der fehler kommt. Ich arbeite mit der easydb-lib (die ihr zum testen des nachstehenden codes braucht).
Wenn der code ausgeführt wird wird eine textdatei angelegt in die dann "debuglogs" geschrieben werden und das geht bis zu dem punkt auch ganz gut wo ich mit easydb ne neue DB anlege ab da wird nix mehr in die textdatei geschrieben und ich bekomme beim debugen mit PB den fehler bei der funktion UseFile(#LogFile) mit dem hinweis: "#File object not initialized".
Kann mir da einer von euch helfen oder liegt es an PB 3.91 oder easydb?
hier mal der code zum testen:
Code: Alles auswählen
Declare WriteToDebugLog(Text.s, ErrorLevel.b)
Declare.s get_app_path()
Declare CheckDatabase()
Declare.l CreateCustomerDB()
Global LogFilename.s
Global user.s
Global pass.s
Global customer.s
customer = "customer.db"
#LogFile = 0
#ErrorLogFilePath = ""
Procedure WriteToDebugLog(Text.s, ErrorLevel.b)
DateText$ = FormatDate("%hh:%ii:%ss %dd.%mm.%yyyy", Date())
UseFile(#LogFile)
Select ErrorLevel
Case 1
WriteStringN("[" + DateText$ + "] :<:CRITICAL ERROR:>: " + Text) ; Kritische Programmfehler mit denen das Programm unbedingt abgebrochen werden muss
End
Case 2
WriteStringN("[" + DateText$ + "] :<:FATAL ERROR:>: " + Text) ; Fatale Programmfehler mit denen das Programm abgebrochen werden muss
End
Case 3
WriteStringN("[" + DateText$ + "] :<:WARNING:>: " + Text) ; Warnmeldungen mit denen das Programm aber noch läuft
Case 4
WriteStringN("[" + DateText$ + "] :<:EVENT:>: " + Text) ; Ereignisse die währen der Programmausführung auftreten
Case 5
WriteStringN("[" + DateText$ + "] :<:DEBUG:>: " + Text) ; Debugmeldungen über Geräteinformationen, Adressen, Werte
EndSelect
EndProcedure
Procedure.s get_app_path() ;gibt den pfad der applicatin zurück
path.s = Space(1024)
GetCurrentDirectory_(1024, @path.s)
path = path + "\"
ProcedureReturn path.s
EndProcedure
Procedure Initialization()
OnErrorResume()
DateText$ = FormatDate("%hh%ii%ss_%dd%mm%yy", Date())
LogFilename = get_app_path() + #ErrorLogFilePath + "debuglog" + DateText$ + ".txt"
If CreateFile(#LogFile, LogFilename) = 0
MessageRequester("Debug Fehler", "Fehler beim erstellen der Debugdatei. Es ist kein Debugen möglich!", 0)
EndIf
WriteToDebugLog("Initialization erfolgreich.", 4)
WriteToDebugLog("Checke Datenbanken............", 4)
CheckDatabase()
WriteToDebugLog("Checke beendet!", 4)
EndProcedure
Procedure CheckDatabase()
If CreateCustomerDB() = 0 ;Datenbank erstellt
WriteToDebugLog(customer + "Datenbank wurde erstellt!", 4)
Else ;Datenbank konnte nicht erstellt werden
MessageRequester("Fehler 110", "Fehlercode: 110" + Chr(10) + "Datenbank " + customer + " konnte nicht erstellt werden" + Chr(10) + "Bitte schauen sie in der Fehlercodetabelle was sie in diesem fall tun können!", #MB_OK|#MB_ICONERROR)
WriteToDebugLog(customer + "Datenbank konnte nicht erstelt werden!", 2)
EndIf
EndProcedure
Procedure.l CreateCustomerDB() ; erstellt die CustomerDB
If edbCreateNulldb(customer,user,pass) = 0
edbCreateAddField("Kd.Nr.,N,6,0")
edbCreateAddField("Name,C,20,0")
edbCreateAddField("Vorname,C,20,0")
edbCreateAddField("Firma,C,25,0")
edbCreateAddField("Tele.,N,20,0")
edbCreateAddField("Tele.Mob,N,20,0")
edbCreateAddField("Strasse,C,20,0")
edbCreateAddField("PLZ,N,5,0")
edbCreateAddField("Ort,C,20,0")
ProcedureReturn 0
Else
ProcedureReturn 1
EndIf
EndProcedure
Initialization()