Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2006.10.08;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.53 MB
Время: 0.078 c
2-1158743253
korleonemike
2006-09-20 13:07
2006.10.08
загрузка из xml в Tlistview


2-1157950790
lobach
2006-09-11 08:59
2006.10.08
List Box


11-1134842022
nester
2005-12-17 20:53
2006.10.08
KOL и x64


1-1156347628
trackbar
2006-08-23 19:40
2006.10.08
Снятие фокуса, а не его передача


2-1158643331
Mishenka
2006-09-19 09:22
2006.10.08
Как работать с Gif в GraphicEx?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский