Модераторы: Snowy, MetalFan, bems, Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Помогите с регулярными выражениями, простой вопрос по регуляркам 
:(
    Опции темы
Denwer
Дата 28.4.2008, 21:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 91
Регистрация: 19.6.2007
Где: Харьков

Репутация: нет
Всего: нет



Помогите с регулярными.
Код

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).



Это сообщение отредактировал(а) Denwer - 28.4.2008, 21:15
PM WWW   Вверх
New Neon
Дата 28.4.2008, 22:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 26
Регистрация: 13.3.2004
Где: Хмельницкий, Укра ина

Репутация: нет
Всего: нет



Код

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. 

Это сообщение отредактировал(а) New Neon - 28.4.2008, 22:06
PM MAIL ICQ   Вверх
source777
Дата 28.4.2008, 22:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1878
Регистрация: 12.3.2007

Репутация: нет
Всего: 56



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


--------------------
Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте
PM MAIL   Вверх
Qu1nt
Дата 28.4.2008, 23:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 602
Регистрация: 13.1.2007

Репутация: 22
Всего: 50



Не забываем, что разделителем может быть не только точка, но и запятая.
PM MAIL   Вверх
source777
Дата 28.4.2008, 23:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1878
Регистрация: 12.3.2007

Репутация: нет
Всего: 56



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


Это сообщение отредактировал(а) source777 - 28.4.2008, 23:17


--------------------
Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте
PM MAIL   Вверх
KgCoder
Дата 1.5.2008, 09:09 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 93
Регистрация: 6.3.2008
Где: KGstan

Репутация: нет
Всего: нет



Вот так наверное...
Тут уже без разницы, точка иль запятая  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;


Это сообщение отредактировал(а) KgCoder - 1.5.2008, 09:12
PM MAIL   Вверх
source777
Дата 1.5.2008, 19:33 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1878
Регистрация: 12.3.2007

Репутация: нет
Всего: 56



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



--------------------
Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0503 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.