Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Компоненты Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.12.2007, 21:44   #1
r-tem
 
Регистрация: 12.12.2007
Сообщений: 4
По умолчанию Проверка Edit, через val..

ребят помогите, суть в том, что нужно для Edit'ов сделать проверку, не ввели ли случайно символы вместо цифр, причем только с помощью Val(таково требование препода). Как ни пробовал не получается.проверку нужно сделать через цикл repeat until.Сделал так,проверку выполняет, делает проверку, если некорректный ввод, выводит сообщение о ошибке, и на этом и останавливается, как сделать чтоб после этого прога возвращалась к началу?


Код:
procedure TForm1.N8Click(Sender: TObject);
const a=0.44;
b=2.28;
   var x,x1,l,x2,d:real;
       y:real;
       c1,c2,c3:integer;
       f:textfile;
       s1:string;
     begin
     repeat


   val(edit1.Text,x1,c1);
   val(edit2.Text,x2,c2);
   val(edit3.Text,d,c3);
   if c1<>0 then
if c2<>0 then
if c3<>0 then
 l:= messagedlg('ошибка',mterror,[mbOk],0);
 if l=mrOK then
 close;


 until (c1=0) and (c2=0) and (c3=0);

   x:=x1;


if checkbox3.Checked then
begin assignfile(f,'text.txt');
                      rewrite(f);end;


    s1:='   x'+'           '+'f(x)';
    memo1.Lines.Add('   x'+'           '+'f(x)');

   while x<=x2 do

     begin

     if (x>0) and (x<>1) then
     begin

       y:=a*sqr(sin(x/2)/cos(x/2))/(b+0.7*x);
       s1:=floattostr(x)+'         '+floattostrf(y,fffixed,10,5);
       if CheckBox1.checked then

          memo1.LineS.add(s1);
          if checkbox2.checked then

           series1.addxy(x,y,'',clred);

           if checkbox3.checked then
            writeln(f,s1);
            end;

   x:=x+d;

end;
  if checkbox2.checked then

     chart1.show;
    if checkbox3.checked then closefile(f);

end;

Последний раз редактировалось Alex21; 12.12.2007 в 22:15. Причина: [code] [/code]
r-tem вне форума Ответить с цитированием
Старый 13.12.2007, 17:09   #2
bill
Форумчанин
 
Аватар для bill
 
Регистрация: 26.04.2007
Сообщений: 440
По умолчанию

1.Если ты хочешь проверять свои строчки каждую секунду-для этого есть компонент таймер.
2. Цикл repeat until здесь явно не к месту.Лучше всего сделать проверку значений эдита в процедуре edit1.change,либо отлавливать сообщение EN_CHANGE либо если этот нужен то надо использовать goto.
+ Я так понял что надо выводить messagedlg всякий раз если хотя бы в одном из эдитов есть другие символы кроме чисел. Поэтому надо:
Код:
if (c1=0)or(c2=0)or(c3=0) then messagedlg...
P.s messagedlg лучше вызывать отдельно не в цикле.
bill вне форума Ответить с цитированием
Старый 13.12.2007, 20:19   #3
mutabor
Телепат с дипломом
Старожил
 
Аватар для mutabor
 
Регистрация: 10.06.2007
Сообщений: 4,929
По умолчанию

Вот пример из справки Дельфи
Код:
uses Dialogs;
var 

  I, Code: Integer;
begin
  { Get text from TEdit control }
  Val(Edit1.Text, I, Code);
  { Error during conversion to integer? }
  if Code <> 0 then
    MessageDlg('Error at position: ' + IntToStr(Code), mtWarning, [mbOk], 0);
  else
    Canvas.TextOut(10, 10, 'Value = ' + IntToStr(I));

end;
Там же можно прочесть зависимость ошибки от директив компилятора
{$R+} An out-of-range value always generates a run-time error.
{$R-} The values for out-of-range vary depending upon the data type of V.
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог
mutabor вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
через какую сетевую карту входить в инет, а через какую в лан шКОЛЯР Свободное общение 2 27.06.2008 17:55
SSL через WinSock или через что? Jolyk Win Api 2 07.06.2008 17:37
Проверка переменных *_ViruS_* Общие вопросы C/C++ 3 21.09.2007 21:33
Проверка на сжатие vitalik007 Общие вопросы Delphi 3 20.08.2007 10:53