Newsgroup: it.comp.lang.delphi
Titolo: Tracciati Record

Ciao a tutti
utilizzo come databases files DBF (Dbase IV) e vorrei stampare i tracciati
record o meglio esportarli in un formato che sia poi importabile da  word.
Avete qualche software da consigliarmi (possibilmente free) ?
Ciao
--
Marco
Reporter Professional srl
supp...@reporterprofessional.it

Aggiungo per spiegarmi meglio che io voglio esportare la struttura dei
records (nome, dimensioni, ecc.)
Devo fare l'elenco dei files usati nelle mie procedure con la relativa
struttura dei records ed il significato in un descrittivo di ogni singolo
campo.
Vorrei evitare di farmi tutto a mano con word o excel.
Ciao


function DBFStructure(FileName:string;l:TStrings):boolean;
{ritorna la struttura di un file DBF in questo modo:
<nome campo>, <tipo campo>, <lunghezza campo>, <decimali>}
const
  FldOffset = 32;
type
  FieldInfo3 = record
     FieldName:array[1..11] of char;   { Field name in ASCII
(zero-filled).}
     FieldType:char;    { Field type in ASCII (C, D, L, M, or N).}
     Filling1:array[1..4] of byte;
     FieldLen:byte;     { Field length in binary.}
     FieldDec:byte;     { Field decimal count in binary.}
     Filling2:array[1..14] of byte;
   end;
  FieldInfo4 = record
     FieldName:array[1..11] of char;   { Field name in ASCII
(zero-filled).}
     FieldType:char;    { Field type in ASCII (C, D, L, M, or N).}
     DataAddress:array[1..4] of byte;  { Field data address (address
is set in memory; not useful}
     FieldLen:byte;     { Field length in binary.}
     FieldDec:byte;     { Field decimal count in binary.}
     ReservedArea1:array[1..2] of byte;{ Reserved for dBASE III PLUS
on a LAN.}
     WorkArea:char;     { Work area ID}
     ReservedArea2:array[1..10] of byte;{ Reserved for dBASE III PLUS
on a LAN.}
     ProductionIndex:char ;{Production MDX field flag; 01H if field
has an
                        index tag in the production MDX file, 00H if
not}
   end;
var
   handle: integer;
   buffer: char;
   p:pchar;
   a:FieldInfo3;
   b:FieldInfo4;
   s:string;
begin
   result:=False;
   if not assigned(l) then
      exit;
   {open binary file R/W}
   handle := FileOpen(FileName, 0);
   if handle<0 then
      exit;
   try
      {read 1st byte}
      FileRead(handle, buffer, 1);
      {determina se il DBF e' tipo dbase III, IV o V}
      if (buffer = #3) or (buffer = #83) then
      begin
         {dbase3}
         FileSeek(handle, FldOffset, 0);
         FileRead(handle, a, sizeof(a));
         while a.FieldName[1]<>#13 do
         begin
            p:=addr(a.FieldName);
            s:=StrPas(p);
            s:=s+','+a.FieldType;
            s:=s+','+IntToStr(a.FieldLen);
            s:=s+','+IntToStr(a.FieldDec);
            l.Add(s);
            FileRead(handle, a, sizeof(a));
         end;
         result:=True;
      end
      else
      begin
         {dbase4}
         FileSeek(handle, FldOffset, 0);
         FileRead(handle, b, sizeof(b));
         while b.FieldName[1]<>#13 do
         begin
            p:=addr(b.FieldName);
            s:=StrPas(p);
            s:=s+','+b.FieldType;
            s:=s+','+IntToStr(b.FieldLen);
            s:=s+','+IntToStr(b.FieldDec);
            l.Add(s);
            FileRead(handle, b, sizeof(b));
         end;
         result:=True;
      end;
   finally
      {close file}
      FileClose(handle);
   end;
end;

Vorrei evitare di farmi tutto a mano con word o excel.
Se è solo per questo, perova questa utility free: 
http://www.torry.net/tools/db/dbother/db_struct.zip
Fa l'essenziale di quello che cerchi...
Ciao
Morde.
morde [at] programmer [.] net

Grazie,
hai fatto anche troppo.
Sei stato gentilissimo a scrivere tutto il codice.
Ora lo applico.
