Форум: "Потрепаться";
Текущий архив: 2002.11.25;
Скачать: [xml.tar.bz2];
ВнизПомогите - NAN Найти похожие ветки
← →
Пиноккио (2002-11-05 21:33) [0]Парадокс, Делфи 5.
Возникает ужасная ощибка. То есть не возникает и программа формирует неправильный отчёт.
Кратко суть дела
- Программа создаёт временную таблицу:
with Table1 do begin
Active := False;
DatabaseName := Session.PrivateDir;
TableType := ttParadox;
TableName := "Temp1";
if Exists then DeleteTable;
with FieldDefs do begin
Clear;
Add("ID", ftInteger, 0, True);
Add("K1", ftFloat, 0, False);
Add("S1", ftFloat, 0, False);
Add("K2", ftFloat, 0, False);
Add("S2", ftFloat, 0, False);
Add("K3", ftFloat, 0, False);
Add("S3", ftFloat, 0, False);
Add("K4", ftFloat, 0, False);
Add("S4", ftFloat, 0, False);
Add("K5", ftFloat, 0, False);
Add("S5", ftFloat, 0, False);
Add("K6", ftFloat, 0, False);
Add("S6", ftFloat, 0, False);
Add("K7", ftFloat, 0, False);
Add("S7", ftFloat, 0, False);
Add("K8", ftFloat, 0, False);
Add("S8", ftFloat, 0, False);
Add("K9", ftFloat, 0, False);
Add("S9", ftFloat, 0, False);
Add("K10", ftFloat, 0, False);
Add("S10", ftFloat, 0, False);
Add("K11", ftFloat, 0, False);
Add("S11", ftFloat, 0, False);
Add("K12", ftFloat, 0, False);
Add("S12", ftFloat, 0, False);
end;
with IndexDefs do begin
Clear;
with AddIndexDef do begin
Name := "";
Fields := "ID";
Options := [ixPrimary];
end;
end;
CreateTable;
end;
Затем в цикле заполняю её примерно так
for i := 1 to ExtractDate(dtpEnd.date, ord(rvMonth)) do begin
Close;
ParamByName ("Params1").AsInteger := I;
Open;
While not Eof do begin
Table1.Edit;
FieldK.Value := FieldByName ("Kolvo").Value;
FieldS.Value := FieldByName ("Summa").Value;
TempTable.Post;
end;
end;
Так вот иногда я имею значение FieldByName ("Kolvo").Value равное 66.01, а после присвоения имею значение FieldK.Value - NAN. Это происходит только для определенных позиций, и то не всегда. Сам процесс формирования отчета занимает около 40 минут, под отладчиком ещё больше.
Проверял на двух третьих пнях с WIN98SE, работает неправильно. Дома не AMD c Win2000 ошибку смоделировать не получилось.
Извините за сумбурность.
Провозился два дня и без результата :-(
Буду благодарен за любую помощь.
← →
Dmk (2002-11-06 01:39) [1]Рекомендую пройти обучение у Юрия Зотова и K. Поищи ветку Этап-2. Там есть ссылка на статью Антона Григорьева. Очень рекомендую.
← →
Shaman (2002-11-06 09:13) [2]Попробуй использовать вместо .Value свойство .AsFloat
Проверь, все ли вещественные переменные инициализируются перед расчетом
← →
Пиноккио (2002-11-06 12:01) [3]2Shaman
Пробовал и Ваш вариант тоже. Не помогает. Никакой ошибки во время исполнения нет.
2DMK
Спасибо
Перечитал статью. Попробую завтра поиграться с различными типами данных.
Однако все же не совсем ясно. Я беру одно число, полученное SQL запрочом при помощи суммирования поля типа Number (как показывает DataBase Desktop). Отладчик мне его показывает, как 66.01 (вот, именно, это число, наверное, заколдованное). А просто присваивая это значение полю, без различных арифмитических действий, дает мне -NAN. А иногда, это же число присваетcя правильно :-(((
Обидно, что бы проверить какое либо изменнение, надо тратить почти час
Страницы: 1 вся ветка
Форум: "Потрепаться";
Текущий архив: 2002.11.25;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.01 c