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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.04.2010, 10:04   #1
Pasha1983
Новичок
Джуниор
 
Регистрация: 02.04.2010
Сообщений: 2
По умолчанию нужно в edit точку заменить запятой используя регулярные выражения

Добрый день
Мне нужно в edit точку заменить запятой

Код:
var
R : TRegExp;
begin
edit.text := '14.01';
R := TRegExp.create(self);
try
R.Pattern := '\.';
R.Replace(Edit.text,',');
finally
R.Free;
end;
end;
Подскажите люди добрые в чем моя ошибка
Pasha1983 вне форума Ответить с цитированием
Старый 02.04.2010, 11:23   #2
Grag
А может и не...
Участник клуба
 
Аватар для Grag
 
Регистрация: 27.03.2010
Сообщений: 1,269
По умолчанию

А без библиотеки рег. выражений это сделать никак нельзя?
Например так:
Код:
procedure TForm1.Button1Click(Sender: TObject);
Var
  S:AnsiString;

begin
  S:=Edit1.Text;
  while Pos('.',S)<>0 do
    begin
      Insert(',',S,Pos('.',S));
      Delete(S,Pos('.',S),1)
    end;
  Edit1.Text:=S
end;
Перемешивай дело с бездельем и не сойдешь с ума...

Последний раз редактировалось Grag; 02.04.2010 в 11:43.
Grag вне форума Ответить с цитированием
Старый 02.04.2010, 11:46   #3
MaxNik2009
Форумчанин
 
Аватар для MaxNik2009
 
Регистрация: 17.09.2009
Сообщений: 294
По умолчанию

вот так проще всего:
Код:
var
  s, sRes: string;
begin
  s:=Edit1.text;
  sRes:=StringReplace(s,'.',',', [ rfReplaceAll, rfIgnoreCase ]);
end;
принимаю благодарности в письменном виде( весы слева)...

Последний раз редактировалось MaxNik2009; 02.04.2010 в 12:29. Причина: исправил
MaxNik2009 вне форума Ответить с цитированием
Старый 02.04.2010, 11:50   #4
Pasha1983
Новичок
Джуниор
 
Регистрация: 02.04.2010
Сообщений: 2
По умолчанию

Конечно можно, но как Вы могли заметить названия темы "Регулярные выражения", а не стандартные функции для работы со строками.
Pasha1983 вне форума Ответить с цитированием
Старый 02.04.2010, 11:56   #5
Grag
А может и не...
Участник клуба
 
Аватар для Grag
 
Регистрация: 27.03.2010
Сообщений: 1,269
По умолчанию

Только еще нужно флажок указать при этом
Код:
Var
  Flags: TReplaceFlags;
begin
  Flags:= [ rfReplaceAll, rfIgnoreCase ];
  ..............
end
Перемешивай дело с бездельем и не сойдешь с ума...
Grag вне форума Ответить с цитированием
Старый 02.04.2010, 12:03   #6
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

1)ребята, ТС нужно с регулярками, а не через стандартные средства.
2)оптимальный способ, это цикл, он же наибыстрейший при замене одного символа на другой.
но не это ТС нужно, я к сожадению регулярки плохо знаю.

ТС, оно компилится кстати(мало ли)?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 02.04.2010, 12:26   #7
Grag
А может и не...
Участник клуба
 
Аватар для Grag
 
Регистрация: 27.03.2010
Сообщений: 1,269
По умолчанию

Pasha1983, ты какую либу подключаешь?
Перемешивай дело с бездельем и не сойдешь с ума...
Grag вне форума Ответить с цитированием
Старый 02.04.2010, 13:12   #8
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Pasha1983, ты какую либу подключаешь?
думаю, что TRegExpr (скорее всего v. 0.952)
нет, я не прав, это не TRegExpr

после поиска...
вроде это похоже на "Использование VBScript RegExp в Delphi" (статья на Королевство Delphi)



___________________________________ ____
Добавлено

а теперь по сути ошибки.
.Replace - возвращает строку. Если есть желание получить результат в поле Edit.Text,
то надо присвоить это этому полю:
Код:
    Edit.text := R.Replace(Edit.text, ',');

Последний раз редактировалось Serge_Bliznykov; 02.04.2010 в 13:40.
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Замена запятой на точку diver83 Microsoft Office Excel 3 13.03.2010 17:30
Регулярные выражения ACE Valery PHP 5 14.10.2009 11:37
Регулярные выражения 7KByte Общие вопросы C/C++ 1 01.06.2009 22:51
регулярные выражения wyvern PHP 3 09.04.2009 22:15