![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Is not a valid floating point value [D6, D7, Paradox]
spogi © (2006-08-02 10:45:00)Что означает это сообщения:
Красный такой круг и внутри белый крестик с надписью - "Is not a valid floating point value"...
Значит, такая вот программа-база, возможно вводить цифры с 000001 до 999999 в формате /000000/. Можно ввести один номер, напр. 001249, или диапазон номеров напр. 001250-002580. Значить каждый раз когда введем новую цифру, или новый диапазон, проверяется не использовалось ли раньше этот номер или один из номеров диапазона. Проверяю я вот таким образом:
Сама База:
--Поял1--Поля2--...--МинНомер--МаксНомер--Кол-во--ПоляН
-- ххх -- ххх --...-- 001250 -- 002580 -- 1331 -- ххх
и т.д.
Беру я каждую запись, проверяю не входит ли туда вводимый мною новый диапазон или какой нибудь один из этих номеров, если да то Прекращаю искать и останавливаюсь, а если нет, беру следующий запись, и т.д. пока не проверю всех записей. После этого добавляю. И работал отлично пока однажды не вышло вот такое сообщение... ПОМОГИТЕ, Спасибо.
И есть ли возможность проделать все это легче?
spogi (2006-08-06 21:49:00) [1]
> Просто интересно, где учат писать такой код?
Ну что делать-то? Когда без учителся учишься, получается вот так, странноватый код! :))
Mike Kouzmine (2006-08-03 16:53:00) [2]Johnmen © (03.08.06 11:54) [24] Как сейчас помню 1984 год. Правда делфи не было.
Johnmen (2006-08-03 11:54:00) [3]
> Mike Kouzmine © (03.08.06 10:37) [23]
>
> Johnmen © (03.08.06 09:12) [22] Да ладно. Мой первый был
> такой же.
Не верю! (с) :)))
Mike Kouzmine (2006-08-03 10:37:00) [4]Johnmen © (03.08.06 09:12) [22] Да ладно. Мой первый был такой же.
Johnmen (2006-08-03 09:12:00) [5]Просто интересно, где учат писать такой код?
Mike Kouzmine (2006-08-02 23:37:00) [6]TbMin:=StrToFloat(DMod.tbNumbersN_MIN.Value);
TbMax:=StrToFloat(DMod.tbNumbersN_MAX.Value);
sniknik (2006-08-02 23:28:00) [7]> А вот и код ... Вообще -то работает, а начало выдавать ошибку...
а вот уже и не надо ...
затянутая шутка становится не смешной...
spogi (2006-08-02 22:55:00) [8]А вот и код ... Вообще -то работает, а начало выдавать ошибку...
procedure TNumberInputForm.BitBtn1Click(Sender: TObject);
var
n:Longint;
min,max,TbMin,TbMax:Real;
StrMin,StrMax:String;
P:Boolean;
label 10;
begin
If LabeledEdit3.Text = '0' then Exit;
P:=False;
min:=StrToFloat(LabeledEdit3.Text);
StrMin:=FormatFloat('000000',min);
max:=StrToFloat(LabeledEdit4.Text);
StrMax:=FormatFloat('000000',max);
If max < min then begin
ShowMessage('Max ne mojet bit menshe Min!');
Exit;
end;
DMod.tbNumbers.MasterSource:=nil;
DMod.tbNumbers.First;
If DMod.tbNumbers.RecordCount = 0 then begin
P:=True;
goto 10;
end;
For n:=1 to DMod.tbNumbers.RecordCount do begin
TbMin:=StrToFloat(DMod.tbNumbersN_MIN.Value);
TbMax:=StrToFloat(DMod.tbNumbersN_MAX.Value);
If (min = TbMin) or (max = TbMax) then begin P:=False; end;
If (min < TbMin) and (max > TbMax) then begin P:=False; end;
If (min > TbMin) and (max < TbMax) then begin P:=False; end;
If (min < TbMin) and (max < TbMin) then begin P:=True; end;
If (min > TbMax) and (max > TbMax) then begin P:=True; end;
If P = False then begin
ShowMessage('Vvedennie vami nomera ranshe ispolzovaloas'
+ #13#10 + 'Min i Maks cislo proveryayte, tam oshibka!');
DMod.tbNumbers.MasterSource:=DMod.DSFirms;
Exit;
end;
DMod.tbNumbers.Next;
end;//end for FOR
DMod.tbNumbers.MasterSource:=DMod.DSFirms;
10:
try
If P = True then begin
With DMod do begin
tbNumbers.Edit;
tbNumbers.Append;
tbNumbersID_Number.Value:=tbFirmsID_Firm.Value;
tbNumbersN_Tarix.Value:=StrToDate(MaskEdit1.Text);
tbNumbersN_Rayon.Value:=DBLookupComboBox1.Text;
tbNumbersN_FirmaAdi.Value:=tbFirmsF_Adi.Value;
tbNumbersN_VOEN.Value:=tbFirmsF_VOEN.Value;
tbNumbersN_Seriya.Value:=LabeledEdit2.Text;
tbNumbersN_MIN.Value:=StrMin;
tbNumbersN_MAX.Value:=StrMax;
tbNumbersN_Count.Value:=StrToInt(LabeledEdit4.Text) - StrToInt(LabeledEdit3.Text) + 1;
tbNumbersN_Mebleg.Value:=tbNumbersN_Count.Value * tbFirmsF_Qiymet.Value;
tbNumbersN_VekaletSerNo.Value:=LabeledEdit1.Text;
tbNumbersN_OdQebzi_MedOrderNo.Value:=LabeledEdit5.Text;
tbNumbers.Post;
tbNumbers.Refresh;
tbFirms.Edit;
tbFirmsF_Count.Value:=tbFirmsF_Count.Value +
StrToInt(LabeledEdit4.Text) -
StrToInt(LabeledEdit3.Text) + 1;
tbFirmsF_Mebleg.Value:=tbFirmsF_Count.Value * tbFirmsF_Qiymet.Value;
tbFirms.Post;
tbFirms.Refresh;
end; //with do begin
end; //if p=true
except
ShowMessage('V polyax imeetsya oshibki, proveryayte!');
DMod.tbNumbers.MasterSource:=DMod.DSFirms;
end;//try-except-end
DMod.tbNumbers.MasterSource:=DMod.DSFirms;
end;
Anatoly Podgoretsky (2006-08-02 19:46:00) [9]17 сообщений и ноль кода и нет типов полей, образца записей в них
Партизан
Плохиш (2006-08-02 19:27:00) [10]Мой телепатор сказал, что у него поле типа char, а строки содержащие пробелы не являются вещественными/целыми числами.
Варианты решения:
1. Изменить тип поля на varchar
2. Использовать функцию trim,StrToFloat(trim(sValue));
Lexiy (2006-08-02 17:53:00) [11]проверь что стоит запятая или точка ... скорее всего сдесь ошибка нужно смотреть региональные настройки и смотреть что гонишь во флоат
spogi (2006-08-02 15:00:00) [12]Ну что ее это такое? Я даже унашел и удалил последнюю запись и когда захотел заного добавить ее не получилось, опять ошибки...
spogi (2006-08-02 13:19:00) [13]
> эта ошибка появляется при работе программы самой по себе
> или при отладке?
Нет, не при отладке, а сама рабочая программа дает ошибку...
spogi (2006-08-02 13:17:00) [14]Дело в том что, я добавлял все новые номера и по ходу суть не изменился, я опять хочу добавлять новые номера или диапазон номеров, только в этот раз не добавляет, и выдает ошибку. Я подумал, вдруг проблема в записе, тогда это проблема та запись, которую я добавил в самом конце, потому что именно после этого и не смог добавить следующую. Нашел этот запись, проверил, нет проблем! :((
umbra (2006-08-02 11:56:00) [15]эта ошибка появляется при работе программы самой по себе или при отладке?
Desdechado (2006-08-02 11:55:00) [16]> Если ошибка дает в процессе StrToFloat, значить когда-то должно было быть ошибка типа FloatToStr
Совсем нет. FloatToStr ошибки перевода не даст, поскольку в строку можно черта лысого запхать, а вот назад....
Johnmen (2006-08-02 11:43:00) [17]Главная ошибка - хранить в символьных полях числовые данные.
sniknik (2006-08-02 11:24:00) [18]> В коде не должно быть проблема, программа 2 недели работает ...
нашол тоже показатель... мелкософтский IE вон с 90-какогото года работает и? месяца не проходит без нового патча исправляющего старые глюки...
нет, все проблемы именно в коде, неправильно обрабатываеш тип/неотслеживаеш ввод неподходящих для обработки данных/не учитываеш локализацию/... и т.д. все проблемы кода.
spogi (2006-08-02 11:22:00) [19]Значить, все таки опять придется искать проблему среди записей, просто интересно знаете что, Если ошибка дает в процессе StrToFloat, значить когда-то должно было быть ошибка типа FloatToStr... Беру запись, перевожу в числовой, обрабатываю, перевожу в стринг и сохраняю в базе. А может ли вот как-то ошибочно добавляться запись в ошибочном виде и уже со следующего раза чтоб это стало проблемой???
Desdechado (2006-08-02 11:13:00) [20]"Is not a valid floating point value" не сочетается с "в формате /000000/".
Попытка сохранить в поле не целого, а дробного типа.