Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Table.Fields [D3, D5, dBase, FoxPro]


Fishka ©   (2002-10-18 09:47:00) 

Как корректно узнать размерность поля для DBF-файла? И точность для числовых полей?


Reindeer Moss Eater   (2002-10-21 15:11:00) [1]

>Andrey ©
У меня твой код выдает 0 знаков после запятой для полей экземпляров TFloatField. А для TBCDField дает верные значения.


Fishka   (2002-10-21 14:06:00) [2]

Выдается ошибка.
А если взять пример Delphi Examples: DbiGetFieldDescs, то тоже выдается ошибка: An error ocurred while attempting to initialize the Borland DataBase Engine (error @2706).
Что делать?


Andrey   (2002-10-21 13:21:00) [3]

>Reindeer Moss Eater
Именно для полей Float и можно получить информацию через BDE.


Reindeer Moss Eater   (2002-10-21 12:57:00) [4]

Все сказанное Andrey годится только для TBCDField, для которых можно получить информацию и без вызовов BDE, а просто через свойства TFieldDef. А о размерах и знаках после запятой TFloatField ничего не узнаеть не удастся.


Andrey   (2002-10-21 12:39:00) [5]

Была такая проблема.

uses DBIProcs;

*****

var fc: word;
fd,cf: PFLDDesc;
fidx: integer; // индекс интересующего Вас поля, нумерация с 0
begin
fidx:=0;
fd := AllocMem(fc*sizeof(FLDDesc));
Check(DBIGetFieldDescs(Table1.Handle,fd));
cf := PFLDDesc(integer(fd) + fidx*sizeof(FLDDesc));
ShowMessage(IntToStr(cf.iUnits2)); // Вот где собака зарыта ! (число дес. знаков после запятой)
if fd <> nil then FreeMem(fd,fc*sizeof(FLDDesc));
end;


Fishka   (2002-10-21 11:55:00) [6]

А конкретно? Как мне узнать, что 1 поле Numeric(10,3), а пятое character (8).
(Тип могу узнать
Table1.Fields[0].DataType,Table1.Fields[4].DataType ).


Reindeer Moss Eater   (2002-10-21 11:04:00) [7]

Reindeer Moss Eater (18.10.02 17:05)


Fishka   (2002-10-21 10:59:00) [8]

А при чем тут документация по DBase. Ну, тип Character или Numeric. Надо считывать информацию из заголовка dbf-файла.
А попроще никак?


Reindeer Moss Eater   (2002-10-21 09:31:00) [9]

Посмотреть описание полей в любой документации по DBase.


Fishka   (2002-10-21 09:15:00) [10]

Как же все-таки узнать размерность полей, даже если DBase версии выше DBase III?


Reindeer Moss Eater   (2002-10-18 17:05:00) [11]

Значит у тебя DBase версии выше DBase III+ и TFloatField.
Для этого типа размеры предопределены заранее, так же как и для полей даты например.


Fishka   (2002-10-18 16:51:00) [12]

TFieldDef.Precision, TFieldDef.Size выдает значение 0.


Reindeer Moss Eater   (2002-10-18 15:27:00) [13]

TFieldDef.Precision, TFieldDef.Size


Fishka   (2002-10-18 15:23:00) [14]

Может, кто-нибудь определял длину и точность поля?


Наверх

Титульная страница Поиск, карта сайта Написать письмо