Sobre Estrutura do DBF

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

rossine
Usuário Nível 3
Usuário Nível 3
Mensagens: 325
Registrado em: 06 Ago 2007 09:57
Localização: Divinópolis-MG

Sobre Estrutura do DBF

Mensagem por rossine »

Olá,

Tem como verificar se a estrutura atual de um determinado .DBF foi criado pelo clipper ou pelo harbour ?

Obrigado,
Rossine.

Harbour 3.4, MingW / Msvc, QT, Qt5xhb, GtQtc, DbfCdx, MySql/MariaDB.
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Sobre Estrutura do DBF

Mensagem por Itamar M. Lins Jr. »

Ola!
Não sei, mas eu criaria um DBF no clipper e o mesmo código, usando harbour e usuaria um editor hexadecimal por exemplo para achar alguma diferença.
Depois eu criaria uma função genérica usando fopen, fseek para procurar essa diferença.
Tem campos novos que o clipper não aceita.

Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
rossine
Usuário Nível 3
Usuário Nível 3
Mensagens: 325
Registrado em: 06 Ago 2007 09:57
Localização: Divinópolis-MG

Sobre Estrutura do DBF

Mensagem por rossine »

Olá Itamar,

Fiz um exemplo simples com tipos de variáveis existentes em Harbour e Clipper:

Código: Selecionar todos

request DBFCDX

function MAIN

cls

? rddsetdefault()
rddsetdefault( "DBFCDX" )
? rddsetdefault()

aStr := { { "cCar", "C",   5, 0 }, ;
          { "nNui", "N",  10, 0 }, ;
          { "nNud", "N",  10, 2 }, ;
          { "dDat", "D",   8, 0 }, ;
          { "lLog", "L",   1, 0 } }

dbcreate( "arqtst.dbf", aStr, "DBFCDX" )

return NIL

E os arquivos criados realmente são muito diferentes.
Abri os arquivos criados do Notepad++ e fiz uma conversão do caracteres apresentados de Ansi -> Hexa e veja com são diferentes:

Arquivo criado pelo harbour

Código: Selecionar todos


0376091420202020C220232020202020
20202020202020202020202020202020
43434152202020202020204320202020
05202020202020202020202020202020
4E4E5549202020202020204E20202020
0A202020202020202020202020202020
4E4E5544202020202020204E20202020
0A022020202020202020202020202020
44444154202020202020204420202020
08202020202020202020202020202020
4C4C4F47202020202020204C20202020
01202020202020202020202020202020
0D201A

Arquivo criado pelo clipper

Código: Selecionar todos

0312091420202020C220232020202020
20202020202020202020202020202020
434341522020F32594544943DE162020
05200B200B20C25A9E54C62192370B20
4E4E55492020F3259454494EDE162020
0A200B200B20C25A9E54C62192370B20
4E4E55442020F3259454494EDE162020
0A020B200B20C25A9E54C62192370B20
444441542020F32594544944DE162020
08200B200B20C25A9E54C62192370B20
4C4C4F472020F3259454494CDE162020
01200B200B20C25A9E54C62192370B20
0D201A
Diante todas estas diferenças irei recriar todos meus .DBF´s em harbour por questão de segurança.

Obrigado pela dica,
Rossine.

Harbour 3.4, MingW / Msvc, QT, Qt5xhb, GtQtc, DbfCdx, MySql/MariaDB.
cnavarro
Usuário Nível 2
Usuário Nível 2
Mensagens: 52
Registrado em: 28 Set 2017 14:16
Localização: Spain

Sobre Estrutura do DBF

Mensagem por cnavarro »

La diferencia en los bytes 1 al 3 corresponden a la fecha de creación, no ha de tenerlos en cuenta
Creo que es asi:

76 - 09 - 14 =>
7 * 16 + 6 * 1 = 118 + 1900 = 2018
0 * 16 + 9 * 1 = 9
1 * 16 + 4 * 1 = 20
( 20/09/2018 )

http://www.dbfree.org/webdocs/1-documen ... ations.htm
Responder