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

Советы » DBASE и DBF » Формат и размер dBase-поля

Во время выполнения программы мне необходимо получать размеры и десятичные порядки полей таблицы DBase.

Следующий код иллюстрирует необходимые вызовы BDE:

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

;

Другое по теме:

Категории

Статьи

Советы

Copyright © 2022 - All Rights Reserved - www.delphirus.com