Текущий архив: 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.52 MB
Время: 0.042 c