Dazu hätte ich aber noch ein paar Fragen:
Code: Alles auswählen
METHOD datenbank:pruefeDbEngine(cFileName)
LOCAL cBytes := Space(30)
LOCAL cDBEDatei := ""
LOCAL nHandle
IF File(cFileName)
nHandle := FOpen(cFileName,FO_EXCLUSIVE)
IF nHandle > 0
FSeek(nHandle, 0, FS_SET)
FRead(nHandle,@cBytes,Len(cBytes))
IF cBytes[1] $ Chr(0x02) // FoxBase
cDbeDatei := "1"
ELSEIF cBytes[1] $ Chr(0x03) // FoxBase+/dBase3+ ohne Memo
cDbeDatei := "2"
ELSEIF cBytes[1] $ Chr(0x30) // VisualFoxPro
cDbeDatei := "3"
ELSEIF cBytes[1] $ Chr(0x31) // Visual FoxPro mit Autoincrement
cDbeDatei := "4"
ELSEIF cBytes[1] $ Chr(0xF5) // das ist eine FoxPro mit Memo
cDbeDatei := "FOXCDX"
ELSEIF cBytes[1] $ Chr(0x83) // FoxBase+/dBase3+ mit Memo
cDbeDatei := "6"
ELSE
::cDbe := "DBFNTX"
::lNeueDbErzeugen := .T.
ENDIF
ENDIF
FClose(nHandle)
ENDIF
RETURN self