Sources
Delphi Russian Knowledge Base
DRKB - это самая большая и удобная в использовании база знаний по Дельфи в рунете, составленная Виталием Невзоровым

Формат и размер dBase-поля

01.01.2007
procedure GetdBaseFieldTypes(t: TTable; var l: TStringList);
var
  pF
: pFLDDesc;
  cProps
: CURProps;
  p
: pFLDDesc;
  i
: Byte;
  w
: Word;
  s
: string;
  oldmode
: LongInt;
begin
 
Check(DbiGetCursorProps(t.Handle, cProps));
 
Check(DbiGetProp(hDBIObj(t.Handle), curXLTMODE, oldmode, SizeOf(LongInt), w));
 
Check(DbiSetProp(hDBIObj(t.Handle), curXLTMODE, LongInt(xltNONE)));
 
try
   
if MaxAvail < (cProps.iFields * SizeOf(FLDDesc)) then
     
raise EOutofMemory.Create('Недостаточно памяти для процесса');
   
GetMem(pF, (cProps.iFields * SizeOf(FLDDesc)));
   
Check(DbiGetFieldDescs(t.Handle, pF));
    p
:= pF;
   
for i := 1 to cProps.iFields do
     
begin
       
with p^ do
         
begin
            s
:= IntToStr(iFldNum) + ' : ' + StrPas(szName) + ' : ';
           
case iFldType of
              fldDBCHAR
:
               
begin { Char string, строка символов }
                  s
:= s + 'CHARACTER(' + IntToStr(iUnits1) + ')';
               
end;
              fldDBNUM
:
               
begin { Number, число }
                  s
:= s + 'NUMBER(' + IntToStr(iUnits1) + ',' + InttoStr(iUnits2) + ')';
               
end;
              fldDBMEMO
:
               
begin { Memo (blob), МEMO-BLOB-поле }
                  s
:= s + 'MEMO';
               
end;
              fldDBBOOL
:
               
begin { Logical, лочическая величина }
                  s
:= s + 'LOGICAL';
               
end;
              fldDBDATE
:
               
begin { Date, поле даты }
                  s
:= s + 'DATE';
               
end;
              fldDBFLOAT
:
               
begin { Float, числа с плавающей точкой }
                  s
:= s + 'FLOAT(' + IntToStr(iUnits1) + ',' + InttoStr(iUnits2) + ')';
               
end;
              fldDBLOCK
:
               
begin { Логический тип LOCKINFO }
                  s
:= s + 'LOCKINFO';
               
end;
              fldDBOLEBLOB
:
               
begin { OLE object (blob), OLE-объект, BLOB-поле }
                  s
:= s + 'OLE';
               
end;
              fldDBBINARY
:
               
begin { Binary data (blob), двоичные данные, BLOB-поле }
                  s
:= s + 'BINARY';
               
end;
           
else
              s
:= s + 'НЕИЗВЕСТНО';
           
end;
         
end;
        l
.Add(s);
       
Inc(p);
     
end;
 
finally
   
Check(DbiSetProp(hDBIObj(t.Handle), curXLTMODE, oldmode));
   
FreeMem(pF, (cProps.iFields * SizeOf(FLDDesc)));
 
end;
end;

-Eryk Bottomley

Взято из Советов по Delphi от Валентина Озерова

Сборник Kuliba