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

Вниз

Как сделать вычисления в edit?   Найти похожие ветки 

 
M126   (2003-06-12 17:00) [0]

Здравстуйте,Мастера.
У меня не считает сумму трех полей edit в четвертое поле (тоже edit) код приблиз-но такой
var ntpr, nimp, nexp, nvs :real;
begin
ntpr:=StrToFloat(Edit14.Text);
nimp:=StrToFloat(Edit15.Text);
nexp:=StrToFloat(Edit16.Text);
nvs:= ntpr+nimp+nexp;
nvs:=StrToFloat(Edit25.Text);
end;
принажатии кнопки вылетает ошибка "is not a valid floating value
при этом в событии каждого editа onKeyPress стоит
if not (Key in [#8,"0".."9","+","E","e",DecimalSeparator]) then Key:=#0;
то есть у каждого поля содержимое исключительно цифровое
кто подскажет что делать?


 
MsGuns   (2003-06-12 17:10) [1]

Может, так ?

nvs:= ntpr+nimp+nexp;
Edit25.Text := FloatToStr(nvs);


 
TohaNik   (2003-06-12 17:11) [2]

Edit25.Text:=FloatToStr(nvs);


 
Archon Kazansky   (2003-06-12 17:14) [3]

А если введут E34e,,,?


 
M126   (2003-06-12 17:20) [4]

Спасибо господа работает! А на счет "А если введут E34e,,,?" посмотрим, а если у Вас есть конкретные предложения подскажите пожалуйста как избежать такого...


 
M126   (2003-06-12 17:22) [5]

Блин пустое поле тоже вызывает ошибку...


 
Sandman25   (2003-06-12 17:24) [6]

>А если введут E34e,,,?

Получат ошибку и будут вводить данные до тех пор, пока не научатся делать это правильно. В конце концов, кому нужно, чтобы программа работала продолжила свою работу - программисту или пользователю, который ее запустил? :)

Кстати, все равно пользователь сможет набрать что-нибудь типа "1е", и никто его не сможет заставить ввести еще хотя бы 1 цифру после e.



 
Sandman25   (2003-06-12 17:27) [7]

M126 (12.06.03 17:20)

Перед запуском процедуры (и можно еще и в OnExit) проверяйте
try
StrToFloat(Edit1.Text);
except
ShowMessage("Введите число");
Edit1.SetFocus;
end;
для каждого Edit. Можно процедурку сделать с параметром сделать, чтобы не писать одно и то же 3 раза.


 
Сирожа   (2003-06-12 17:30) [8]

try
if Edit14.Text<>"" then ntpr:=StrToFloat(Edit14.Text);
except
on E:Exception do ShowMessage("Тупой пользователь, введи правильное значение");

end;


 
MsGuns   (2003-06-12 17:33) [9]

>Sandman25 © (12.06.03 17:27)
>для каждого Edit. Можно процедурку сделать с параметром сделать, чтобы не писать одно и то же 3 раза.

А Sender для интерьера придуман ?


 
M126   (2003-06-12 17:36) [10]

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


 
Sandman25   (2003-06-12 17:44) [11]

MsGuns © (12.06.03 17:33)

А без хамства можно?
Sender используется в событиях, и если поставить обработчик OnExit, то Ваш совет правомочен. Да и то, только в том случае, если у него не было до этого разных обработчиков для разных TEdit.
Или если автор ветки не хочет ставить обработчики на TEdit, что Вы ему посоветуете?
Случайно не написать некоторую процедуру типа
procedure TestEdit(Edit: TEdit);
begin
try
StrToFloat(Edit.Text);
except
ShowMessage("Введите число");
Edit.SetFocus;
end;
end;

Или данная процедура будет работать только если формальный параметр имеет идентификатор Sender? Вы еще скажите, что удобнее Sender как TObject объявить :)



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

Форум: "Базы";
Текущий архив: 2003.07.07;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.008 c
14-20225
KIE
2003-06-19 13:14
2003.07.07
Настройки сети


3-19982
linker
2003-06-10 12:59
2003.07.07
pdf и Blob


3-20001
DmitryNekl
2003-06-13 13:10
2003.07.07
Как создать connectionstring у компонента ADOConnection в runtime


1-20115
mao
2003-06-24 16:40
2003.07.07
RichEdit не видит картинки??? :(


1-20127
OlkaGTS
2003-06-24 14:39
2003.07.07
Можно ли сделать перегрузку свойства (property overload)?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский