Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Для новичков > Помогите с регулярными выражениями


Автор: Denwer 28.4.2008, 21:15
Помогите с регулярными.
Код

procedure TForm1.Valid(Sender: TObject; var Key: Char);
begin
  if not(key in [#8,'0'..'9'{,','}]) then
  begin
    Key := #0;
    ShowMessage('Вводите только цифры');
  end;
end;

Есть процедура которая разрешает только ввод цифр.
Мне нужно переделать её под такой шаблон (цифра, точка, цифра).
Тоесть не только целые но и дробные числа (2.4, 0.1, 55.1, 2, 12).


Автор: New Neon 28.4.2008, 22:01
Код

procedure TForm1.Valid(Sender: TObject; var Key: Char);
begin
  if (not(key in [#8,'0'..'9'])) or ((key='.') and (pos('.', (Sender as TEdit).text)<>0)) then
  begin
    Key := #0;
    ShowMessage('Вводите только цифры');
  end;
end;


Вот самое простое изменение. Правда специализировано под компонент класса TEdit. 

Автор: source777 28.4.2008, 22:46
Регулярка тут действительно простая:
'\d+(\.\d+)?'

Автор: Qu1nt 28.4.2008, 23:02
Не забываем, что разделителем может быть не только точка, но и запятая.

Автор: source777 28.4.2008, 23:16
Цитата(Qu1nt @  28.4.2008,  23:02 Найти цитируемый пост)
Не забываем, что разделителем может быть не только точка, но и запятая. 
Это уже зависит от культуры... В данном случае культура для чисел задана в виде шаблона (цифра, точка, цифра) условием задачи.

Автор: KgCoder 1.5.2008, 09:09
Вот так наверное...
Тут уже без разницы, точка иль запятая  smile 
Код

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
  case Key of
    '0'..'9',#8:  ;
    #13: Calculate; // клавиша <Enter> - вычислить
    '.',',':
      begin
        if Key = '.'
          then Key := ',';
        // не позволяет вводить знак запятой повторно
        if Pos(',',Edit1.Text) <> 0
          then Key := Chr(0);
      end;
    else Key := Chr(0);
  end;
end;

Автор: source777 1.5.2008, 19:33
Цитата(KgCoder @  1.5.2008,  09:09 Найти цитируемый пост)
Вот так наверное...
А какое отношение приведённый тобой код имеет к теме "Помогите с регулярными выражениями, ..."

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)