Seite 1 von 1

liegt der fehler bei easyDB oder bei PB?

Verfasst: 06.10.2004 11:45
von nicolaus
Hi mal wieder

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()
danke euch schon mal

Verfasst: 06.10.2004 12:06
von nicolaus
hat sich so eben erledigt. (danke an dieser stelle noch mal an rings der mir den tip für die lösung gegeben hat.)
Für alle die mal einen solchen fehler haben sollten:
Das prob liegt an easydb die intern mit PB-Funktionen arbeitet und somit können sich die filenummern überschneiden und es kommt zu dem bei mir aufgetretenen fehler. Man kann dies umgehen in dem man wie in meinem fall der textdatei eine höhere filenummer gibt.
vieleicht fixt galaxy das ja auch noch mal in der easydb.

MfG Nico