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

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

Ошибка "Invalid floating point operation"


Страницы:   1 2

Mamochka ©   (2006-10-03 09:31:00) 

Здравствуйте! Помогите пожалуйста...

...
NNOPER:=FieldByName('NNOPER').AsInteger;
...
Именно в этой строчке возникает вот такая ошибка "Invalid floating point operation"

Что это и как с этим бороться?


Mamochka   (2006-10-03 10:24:00) [21]


> clickmaker


:о)

есть готовая база MainSd.dbf в которой есть поле  NNOPER

из файла берется номер операции вставляется в базу MainSd.dbf

почему не вставляется не знаю пишет ошибку.

Может кто-нибудь скажет что эта ошибка означает
потому, что поле NNOPER существует


pavel_guzhanov   (2006-10-03 10:24:00) [22]


> Mamochka ©   (03.10.06 10:11) [16]

Ну и где это значение пишется в базу?


clickmaker   (2006-10-03 10:19:00) [23]


> [16] Mamochka ©   (03.10.06 10:11)

не видно связи между приведенным кодом и FieldByname...


Mamochka   (2006-10-03 10:11:00) [24]


> pavel_guzhanov


дае есть такой файлик nnoper.inc в котором есть номер операции

смотри процедуру...

Procedure GetNNOPER;
Var
hFile:Integer;
FullIniFileName:String;
CurrentNNOPER:Integer;
CurrentNNOPERStr:String;
Buff:Array[0..9] Of Byte;
N:Integer;
Begin {GetNNOPER}
FullIniFileName:=WorkPath+IniPath+IniFileName;
If Not FileExists(FullIniFileName) Then
Begin {If Not}
ShowMessage('Не могу найти файл'+FullIniFileName+'!');
Application.Terminate;
End;  {If Not}

hFile:=-4;
While hFile < 4 Do
hFile:=FileOpen(FullIniFileName,fmOpenReadWrite);

FileRead(hFile,Buff,SizeOf(Buff));

For N:=9 DownTo 0 Do
CurrentNNOPERStr:=Char(Buff[N])+CurrentNNOPERStr;

CurrentNNOPER:=StrToInt(CurrentNNOPERStr);
NNOPER:=CurrentNNOPER;
Inc(CurrentNNOPER);
CurrentNNOPERStr:=IntToStr(CurrentNNOPER);

FillChar(Buff,SizeOf(Buff),#32);
For N:=9 DownTo SizeOf(Buff)-Length(CurrentNNOPERStr) Do
Buff[N]:=Ord(CurrentNNOPERStr[N]);

FileSeek(hFile,0,0);
FileWrite(hFile,Buff,SizeOf(Buff));
FileClose(hFile);

End;


Mamochka   (2006-10-03 10:05:00) [25]


> novill


из Главной базы main.dbf читаю, в другую базу mainsd.dbf пишу :о)


pavel_guzhanov   (2006-10-03 10:04:00) [26]


> то что номер берется из файлика это точно

Если судить по коду, приведенному в [8], ты его пытаешься получить из базы данных, из поля "NNOPER". Еще раз спрошу, ты уверен, что "из файлика" этот номер вставлен в базу?


Mamochka   (2006-10-03 10:00:00) [27]


> pavel_guzhanov


то что номер берется из файлика это точно


novill   (2006-10-03 09:59:00) [28]

Так ты в базу пишешь или из базы читаешь?
С этим определись.
Если читаешь, то зачем Edit, если хочешь писать, почему читаешь?


pavel_guzhanov   (2006-10-03 09:52:00) [29]


> Номер операции берется из файлика


Из файлика он вставляется в базу? Уверен? Проверь...


clickmaker   (2006-10-03 09:51:00) [30]


> [8] Mamochka ©   (03.10.06 09:47)

якорный бабай...
я не просил код. Я спрашивал, какого типа у тебя DataSet, и посоветовал проверить, есть ли там это поле (в редакторе полей посмотри) и есть ли в нем значение. Другими средствами. Какими - зависит от того, что за базу ты юзаешь.
Это всё, кстати, надо было в самом начале описать. Правила хорошего тона


Mamochka   (2006-10-03 09:49:00) [31]


> pavel_guzhanov

Номер операции берется из файлика


Mamochka   (2006-10-03 09:47:00) [32]


> clickmaker


CountList.Clear;

tbMain.First;

For N:=0 To tbMain.RecordCount-1 Do
Begin {For N}
FillChar(CountItem,SizeOf(CountItem),#0);
With tbMain, CountItem Do
Begin {With tbMain}

Edit;
FieldValues['STATUS']:=1;

NNOPER:=FieldByName('NNOPER').AsInteger;

TASK:=FieldByName('TASK').AsString;
DATAOPER:=FieldByName('DATAOPER').AsDateTime;
NNDOC:=FieldByName('NNDOC').AsString;
DT_SCHET:=FieldByName('DT_SCHET').AsString;
DT_CODE:=FieldByName('DT_CODE').AsString;
KT_SCHET:=FieldByName('KT_SCHET').AsString;
KT_CODE:=FieldByName('KT_CODE').AsString;
SUMMA:=FieldByName('SUMMA').AsFloat;
End;  {With tbMain}


novill   (2006-10-03 09:46:00) [33]

Услуги телепатов дорого тебе обойдутся :)

Потому либо давай код, либо трассировщик в руки...


pavel_guzhanov   (2006-10-03 09:45:00) [34]

Насколько я понял, у тебя в базе номер операции должен присваиваться автоматически. Скорее всего он не присваивается. и ты пытаешься считать значение поля, равное null, но считать его как Integer. Null не может перевестись в Integer. Хотя, про автоматическое присвоение-это я наверное напрасно... автоматически, или его присваивает твоя программа - это без разницы. Все равно вероятнее всего, он не присвоен


clickmaker   (2006-10-03 09:44:00) [35]


> [4] Mamochka ©   (03.10.06 09:39)

что за набор данных-то? Query, Table...? Есть там это поле вообще?


Mamochka   (2006-10-03 09:39:00) [36]


> novill

Пробовал, дело втом что там должен быть номер операции, но он не присваивается сразу вылетает ошибка


novill   (2006-10-03 09:37:00) [37]

Посмотреть что находится в поле пробовал?
типа
showmessage(FieldByName('NNOPER'). asstring)


Mamochka   (2006-10-03 09:36:00) [38]


> clickmaker

NNOPER имеет тип Integer


clickmaker   (2006-10-03 09:35:00) [39]

а какой тип у поля NNOPER? и есть ли оно в DataSet, чей FieldByName?


Страницы:   1 2

Наверх

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