Главная страница
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.028 c
1-21545
^Sanya
2002-10-29 13:39
2002.11.07
Подскажите, пожалуйста насчёт параметров процедур...


1-21600
Sombrero
2002-10-30 12:51
2002.11.07
Хелп!!! Конвертация из *.dbf в *.txt


1-21512
Separator
2002-10-29 07:23
2002.11.07
Адресное пространство


14-21793
MaximatorVeter
2002-10-10 23:02
2002.11.07
Когнетивная психология!


1-21627
-Alex-
2002-10-26 17:10
2002.11.07
Перехват второй копии и запуск функции.