Muy buenas foro, ¿hay alguna funcion que nos diga si un fichero es una base de datos DBF?
Un Saludo.
Muy buenas foro, ¿hay alguna funcion que nos diga si un fichero es una base de datos DBF?
Un Saludo.
Hola,
No conozco una función así pero creo que podrías crearla usando un try catch e intentando abrirla en modo compartido.
De este modo, si dá un error puedes "detectar" que no es una DBF y, en caso contrario la cierras sabiendo que SI es una DBF.
Saludos.
Rolando ![]()
00000000 03 0A 06 10 01 00 00 00 62 04 44 01 00 00 00 00 ........b.D.....
00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00000020 41 56 49 53 4F 00 E7 14 58 D2 01 43 F0 B8 0D 3D NOMBR...X..C...=
00000030 02 00 00 00 01 00 58 D2 FA B8 C0 21 E7 14 01 00 ......X....!....
00000040 44 41 54 41 42 4C 4F 43 4B 00 01 4E F0 B8 0D 3D APELLIDO..N...=
00000050 09 00 00 00 01 00 58 D2 FA B8 C0 21 E7 14 01 00 ......X....!....
00000060 52 45 47 49 53 54 52 4F 00 00 01 4E F0 B8 0D 3D CIUDAD.....N...=
00000070 09 00 00 00 01 00 58 D2 FA B8 C0 21 E7 14 01 00 ......X....!....
00000080 4D 45 4E 53 41 4A 45 00 00 00 01 4E F0 B8 0D 3D PROFESI....N...=
00000090 09 00 00 00 01 00 58 D2 FA B8 C0 21 E7 14 01 00 ......X....!....
000000A0 43 41 54 00 41 4A 45 00 00 00 01 4E F0 B8 0D 3D SUELDO....N...=Muy buenas foro, he realizado una pequeña funcion para que nos diga si es una DBF o no.
function IsDBF(cFile)
local xAlias,lError:=.f.
try
use &(cFile) alias xAlias
lError:=.f.
catch
lError:=.t.
end catch
if !lError
xAlias->(dbclosearea())
end if
return !lError
Un Saludo.
Modificacion de la funcion para funcione en todos los casos:
function IsDBF(cFile)
local hFile,buffer,cText:=""
hFile:=fopen(cFile)
buffer:=SPACE(512)
fread(hFile,@buffer ,512)
cText:=str2hex(substr(buffer,1,1))
fclose(cFile)
if alltrim(cText)="03"
lOk:=.t.
else
lOk:=.f.
end if
return lOk
Un Saludo.