Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.11.07;
Скачать: CL | DM;

Вниз

Table.Fields   Найти похожие ветки 

 
Fishka   (2002-10-18 09:47) [0]

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


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

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


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

TFieldDef.Precision, TFieldDef.Size


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

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



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

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


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

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


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

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


 
Fishka   (2002-10-21 10:59) [7]

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


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

Reindeer Moss Eater (18.10.02 17:05)


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

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


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

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

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;


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

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


 
Andrey ©   (2002-10-21 13:21) [12]

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


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

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


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

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



Страницы: 1 вся ветка

Текущий архив: 2002.11.07;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.023 c
14-21732
Карлсон
2002-10-17 16:30
2002.11.07
люди, скажите че-нить доброе, а то устал я очень.


1-21530
Gum
2002-10-29 11:46
2002.11.07
Как создать круглую кнопку


14-21802
D_B
2002-10-17 08:59
2002.11.07
Что за профессия - эникейщик ?


4-21882
Nikolas ShmuS
2002-09-27 00:26
2002.11.07
Принудительно минимизировать!


1-21533
Whippi
2002-10-29 11:32
2002.11.07
Вставить текст в Edit