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

Вниз

Is not a valid floating point value   Найти похожие ветки 

 
spogi   (2006-08-02 10:45) [0]

Что означает это сообщения:
 Красный такой круг и внутри белый крестик с надписью -   "Is not a valid floating point value"...

Значит, такая вот программа-база, возможно вводить цифры с 000001 до 999999 в формате /000000/. Можно ввести один номер, напр. 001249, или диапазон номеров напр. 001250-002580. Значить каждый раз когда введем новую цифру, или новый диапазон, проверяется не использовалось ли раньше этот номер или один из номеров диапазона. Проверяю я вот таким образом:

Сама База:
--Поял1--Поля2--...--МинНомер--МаксНомер--Кол-во--ПоляН
-- ххх   -- ххх   --...-- 001250   -- 002580     -- 1331  -- ххх
и т.д.

Беру я каждую запись, проверяю не входит ли туда вводимый мною новый диапазон или какой нибудь один из этих номеров, если да то Прекращаю искать и останавливаюсь, а если нет, беру следующий запись, и т.д. пока не проверю всех записей. После этого добавляю. И работал отлично пока однажды не вышло вот такое сообщение... ПОМОГИТЕ, Спасибо.

И есть ли возможность проделать все это легче?


 
Sergey13 ©   (2006-08-02 10:49) [1]

В каком нибудь из проверяемых полей не то значение (не того типа, может буква вкралась или еще какой знак), которое ожидалось или нет значения вообще.


 
spogi   (2006-08-02 11:02) [2]

Я тоже сперва так подумал, но ищу и не нахожу подобный случай. Записей очень много, но я посмотрел, все таки еще пересмотрю. Но не может ли это быть проблема с перебором записей или какая то еще другая проблема что не дает продолжать проверку? По другому, не перебирая всех записей возможно что-то подобное?


 
Johnmen ©   (2006-08-02 11:05) [3]

Где типы полей?
Где код???


 
Sergey13 ©   (2006-08-02 11:07) [4]

> [2] spogi   (02.08.06 11:02)

При ошибке выведи номер (ключ) записи. В ней и ищи.
Может буква "О" вместо нолика.


 
Sergey13 ©   (2006-08-02 11:08) [5]

> [3] Johnmen ©   (02.08.06 11:05)

Так наверняка поле строковое, а отсыпается на чем нибудь типа StrToInt.
Или мой телепатор можно выбрасывать.


 
spogi   (2006-08-02 11:11) [6]

В коде не должно быть проблема, программа 2 недели работает, а типы поля только Кол-во Integer, все остальные поля Стринговые. Я хотел МинЧисло и МаксЧисло тоже делать Integer или какой другой работающий с цифрами, но было проблема с отоброжением в формате /000000/, поэтому взял оба стринговый и в процедурах, перевожу данные в числовой формат, обрабатываю, потом заного в стринг с форматом /000000/ возвращаю...


 
Desdechado ©   (2006-08-02 11:13) [7]

"Is not a valid floating point value" не сочетается с "в формате /000000/".
Попытка сохранить в поле не целого, а дробного типа.


 
spogi   (2006-08-02 11:22) [8]

Значить, все таки опять придется искать проблему среди записей, просто интересно знаете что, Если ошибка дает в процессе StrToFloat, значить когда-то должно было быть ошибка типа FloatToStr... Беру запись, перевожу в числовой, обрабатываю, перевожу в стринг и сохраняю в базе. А может ли вот как-то ошибочно добавляться запись в ошибочном виде и уже со следующего раза чтоб это стало проблемой???


 
sniknik ©   (2006-08-02 11:24) [9]

> В коде не должно быть проблема, программа 2 недели работает ...
нашол тоже показатель... мелкософтский IE вон с 90-какогото года работает и? месяца не проходит без нового патча исправляющего старые глюки...

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


 
Johnmen ©   (2006-08-02 11:43) [10]

Главная ошибка - хранить в символьных полях числовые данные.


 
Desdechado ©   (2006-08-02 11:55) [11]

> Если ошибка дает в процессе StrToFloat, значить когда-то должно было быть ошибка типа FloatToStr
Совсем нет. FloatToStr ошибки перевода не даст, поскольку в строку можно черта лысого запхать, а вот назад....


 
umbra ©   (2006-08-02 11:56) [12]

эта ошибка появляется при работе программы самой по себе или при отладке?


 
spogi   (2006-08-02 13:17) [13]

Дело в том что, я добавлял все новые номера и по ходу суть не изменился, я опять хочу добавлять новые номера или диапазон номеров, только в этот раз не добавляет, и выдает ошибку. Я подумал, вдруг проблема в записе, тогда это проблема та запись, которую я добавил в самом конце, потому что именно после этого и не смог добавить следующую. Нашел этот запись, проверил, нет проблем! :((


 
spogi   (2006-08-02 13:19) [14]


> эта ошибка появляется при работе программы самой по себе
> или при отладке?


Нет, не при отладке, а сама рабочая программа дает ошибку...


 
spogi   (2006-08-02 15:00) [15]

Ну что ее это такое? Я даже унашел и удалил последнюю запись и когда захотел заного добавить ее не получилось, опять ошибки...


 
Lexiy   (2006-08-02 17:53) [16]

проверь что стоит запятая или точка ... скорее всего сдесь ошибка нужно смотреть региональные настройки и смотреть что гонишь во флоат


 
Плохиш ©   (2006-08-02 19:27) [17]

Мой телепатор сказал, что у него поле типа char, а строки содержащие пробелы не являются вещественными/целыми числами.
Варианты решения:
1. Изменить тип поля на varchar
2. Использовать функцию trim, StrToFloat(trim(sValue));


 
Anatoly Podgoretsky ©   (2006-08-02 19:46) [18]

17 сообщений и ноль кода и нет типов полей, образца записей в них
Партизан


 
spogi   (2006-08-02 22:55) [19]

А вот и код ... Вообще -то работает, а начало выдавать ошибку...

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;


 
sniknik ©   (2006-08-02 23:28) [20]

> А вот и код ... Вообще -то работает, а начало выдавать ошибку...
а вот уже и не надо ...

затянутая шутка становится не смешной...


 
Mike Kouzmine ©   (2006-08-02 23:37) [21]

TbMin:=StrToFloat(DMod.tbNumbersN_MIN.Value);
  TbMax:=StrToFloat(DMod.tbNumbersN_MAX.Value);


 
Johnmen ©   (2006-08-03 09:12) [22]

Просто интересно, где учат писать такой код?


 
Mike Kouzmine ©   (2006-08-03 10:37) [23]

Johnmen ©   (03.08.06 09:12) [22] Да ладно. Мой первый был такой же.


 
Johnmen ©   (2006-08-03 11:54) [24]


> Mike Kouzmine ©   (03.08.06 10:37) [23]
>
> Johnmen ©   (03.08.06 09:12) [22] Да ладно. Мой первый был
> такой же.


Не верю! (с)   :)))


 
Mike Kouzmine ©   (2006-08-03 16:53) [25]

Johnmen ©   (03.08.06 11:54) [24] Как сейчас помню 1984 год. Правда делфи не было.


 
spogi   (2006-08-06 21:49) [26]


> Просто интересно, где учат писать такой код?


Ну что делать-то? Когда без учителся учишься, получается вот так, странноватый код! :))



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

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

Наверх




Память: 0.54 MB
Время: 0.044 c
11-1133822851
NewApplet
2005-12-06 01:47
2006.10.08
Чем можно заменить Applet ?


1-1156858042
DFil
2006-08-29 17:27
2006.10.08
Потоки и их организация...


15-1158322063
nstur
2006-09-15 16:07
2006.10.08
Калькулятор


4-1148562019
Elen
2006-05-25 17:00
2006.10.08
Это опять я со своим надоедливым вопросом перехвата функций API


8-1141762634
Yr2
2006-03-07 23:17
2006.10.08
Включение звуковой карты в режиме простого усилителя звука