Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.52/100: Рейтинг темы: голосов - 100, средняя оценка - 4.52
158 / 157 / 16
Регистрация: 26.07.2008
Сообщений: 549
1

Замена символа в Memo

10.08.2008, 19:27. Показов 18299. Ответов 13
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
В Мемо загружены данные из файла.
Подскажите пожалуйста, как заменить во всём Мемо символ "," на "."?

Этот код почему-то не работает
Delphi
1
2
3
4
5
6
7
8
9
procedure TForm1.Button2Click(Sender: TObject);
var
i:integer;
begin
while (int i:=Memo1.Text.Pos[SIZE=3](",")[/SIZE]);
   Memo1.Text=Memo1.Text.DelDelete(i,3);
       Memo1.Text = Memo1.Text.Insert[SIZE=3](".",i);[/SIZE]
//StringReplace([SIZE=3]',', '.'[/SIZE], [rfReplaceAll]);
end;
Что не так?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.08.2008, 19:27
Ответы с готовыми решениями:

Memo, удалить первые 3 символа
как можно удалить первые 3 символа из memo ?

Как удалить текст после определённого символа из Memo?
Всем привет! Мне нужно удалить текст из мемо после знака = и заменить его на член массива и...

Замена текста в Memo
for i := 1 to length(Memo1.Text) do if text='Q'then text:='Й'; код который заменяет Q на Й а...

Замена текста в Memo
Здравствуйте. имеется текст в мемо T 1480 -1928 2732 0 270 0 T 1441 -2062 2734 0 90 0 CT 1224...

13
Почетный модератор
11525 / 4320 / 448
Регистрация: 12.06.2008
Сообщений: 12,412
10.08.2008, 19:31 2
Код
For I := 1 to Length(Memo.Lines.Text) do
  If Memo.Lines.Text[I]=',' then Memo.Lines.Text[I] := '.';
1
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
10.08.2008, 19:44 3
while (int i:=Memo1.Text.Pos(","));
Memo1.Text=Memo1.Text.DelDelete(i,3);
Memo1.Text = Memo1.Text.Insert(".",i);
//StringReplace(',', '.', [rfReplaceAll]);
Это на каком языке написано? И вообще Вам вроде точки на запятые нужно было переделать.
0
Почетный модератор
11525 / 4320 / 448
Регистрация: 12.06.2008
Сообщений: 12,412
10.08.2008, 19:51 4
А правда... можно использовать StringReplace:
Memo1.Lines.Text := StringReplace(Memo1.Lines.Text,',','.',[rfReplaceAll]);
0
158 / 157 / 16
Регистрация: 26.07.2008
Сообщений: 549
10.08.2008, 20:21  [ТС] 5
Цитата Сообщение от Humanoid Посмотреть сообщение
А правда... можно использовать StringReplace:
Memo1.Lines.Text := StringReplace(Memo1.Lines.Text,',','.',[rfReplaceAll]);
Спасибо, все получилось.
0
1 / 1 / 0
Регистрация: 09.10.2008
Сообщений: 28
18.10.2008, 13:06 6
еще можно так:
Delphi
1
2
3
4
5
6
7
8
9
uses StrUtils
 
...
var str1, Str2, Str3: String;
begin;
Str1 := ',,,,'; //исходныый текст
Str2 := ','; //что заменить
Str3 := '.'; //чем заменить
Str1 := AnsiReplaceStr(Str1, Str2, Str3);
0
13208 / 6596 / 1041
Регистрация: 10.01.2008
Сообщений: 15,069
19.10.2008, 15:29 7
А теперь сделай Ctrl+Click на AnsiReplaceStr и увидишь, что она вызывает StringReplace(). Так зачем подключать целый модуль StrUtils из-за одной такой ерунды, когда можно напрямую вызвать StringReplace()
0
1 / 1 / 0
Регистрация: 09.10.2008
Сообщений: 28
19.10.2008, 19:48 8
ну вообще да.

я же как вариант!
0
1 / 1 / 0
Регистрация: 25.12.2008
Сообщений: 9
17.12.2008, 15:33 9
А если нужно заменить несколько символов? Например всё, что между '<' и '>'. Например есть тег '<b>' и '</b>'. И тот и другой надо заменить на пробел ''. А есть теги еще длиннее, но тем или не менее, позиционировать надо именно на скобках '<','>'.
Я выдираю из хтмл-страницы одну нужную мне таблицу, лишнее сверху и снизу удаляю. И теперь мне надо забрать из неё данные, мешают разные теги.
Способ:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
j := Pos('<A name="5" id="5">',s);
Delete(s,1,j-1);
j := Pos('<TD colspan="13" bgcolor="#CCCCCC"><CENTER>',s);
Delete(s,1,j+25);
j := Pos('</TABLE>',s);
Delete(s,j,len);
begin
s := StringReplace(s, '<B>', '', [rfReplaceAll, rfIgnoreCase]);
s := StringReplace(s, '</B>', '', [rfReplaceAll, rfIgnoreCase]);
s := StringReplace(s, '</CENTER></TD>', '', [rfReplaceAll, rfIgnoreCase]);
end;
Memo1.Lines.Text := s;
геморойный шо писец, ибо там тех тегов тьма. А как можна искать, например, с помощью цыкла и заменять все теги на пропуски?
Буду очень благодарна и признательна за помощь!
0
1 / 1 / 0
Регистрация: 25.12.2008
Сообщений: 9
25.12.2008, 12:26 10
Проблему решила сама по-женски, конечно, но таки работает безотказно:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
 begin
   Memo1.SelectAll;
   len := Memo1.SelLength;
   s := Memo1.SelText;
 
     j := Pos('<A name="5" id="5">',s);
     Delete(s,1,j-1);
     j := Pos('̳ñÿöü ³íäåêñàö³¿',s);
     Delete(s,1,j+16);
     j := Pos('</TABLE>',s);
     Delete(s,j+8,len);
       for i := 0 to len+1 do
         begin
           j:=Pos('<',s);
           word := Copy(s,j,1);
           j_l := Pos('>',s);
           word_end := Copy(s,j_l,1);
           for k := j to j_l do
           Delete(s,j,1);
           s := StringReplace(s, '  ', '/', [rfReplaceAll, rfIgnoreCase]);
           s := StringReplace(s, '/', ' ', [rfReplaceAll, rfIgnoreCase]);
         end;
      Memo1.Lines.Text := s;
0
1 / 1 / 0
Регистрация: 25.12.2008
Сообщений: 9
04.03.2009, 19:33 11
Еще больше оптимизировала код:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
procedure TfrmZpRefIndex.SaveClick(Sender: TObject);
  var
  tS, tSr : String;
  i, t, len : LongInt;
  Del, Del_end : LongInt;
begin
  tS := Memo1.Lines.Text;
  i := Pos('<A name="5" id="5">', tS);
  tSr := Copy(tS, i+1, len);
  i := Pos('Місяць індексації', tSr);
  tSr := Copy(tSr, i+81, len);
  i := Pos('</TR></TABLE>', tSr);
  tS := Copy(tSr, 1, i-8);
  Memo1.SelectAll;
  len := Length(Memo1.Lines.Text);
    for i := 0 to len+1 do
      begin
        Del := Pos('<', tS);
        Del_end := Pos('>', tS);
         for t := Del to Del_end do
          begin
            Delete(tS,Del,1);
          end;
        tS := StringReplace(tS, '  ', ' ', [rfReplaceAll, rfIgnoreCase]);
      end;
   Memo1.Text := tS;
end;
0
0 / 0 / 0
Регистрация: 11.07.2018
Сообщений: 34
02.05.2020, 01:26 12
Может вопрос уже не актуален, но никак не получается заменить одинаковые символы разными значениями.
В Memo загружены строки. В каждой строке значения разделены | (разделителем).
Пример:
  • Hr6814773|Ro57jf56mdHs|4824921
  • Hh259sz95g|kRf02lUdfs6712|930017
  • Hvjewd930|fkIz783Bjd74ja|482941

И таких строк больше сотни.
Необходимо вначале каждой строки подставить row=
Первый | заменить на &piar=
Второй | - на &cont=
И так во всём тексте.
0
1077 / 488 / 316
Регистрация: 05.04.2013
Сообщений: 2,140
02.05.2020, 09:08 13
Цитата Сообщение от gurkin6 Посмотреть сообщение
Может вопрос уже не актуален
ну и создал бы новую тему. в принципе для 100 строк подойдет такой код:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
procedure TForm1.Button1Click(Sender: TObject);
var
s : String;
i, p : Integer;
begin
for i := 0 to memo1.Lines.Count-1 do begin
    s := Memo1.Lines[i];
    p := Pos('|', s); delete(s, p, 1); insert('&piar=', s, p);
    p := Pos('|', s); delete(s, p, 1); insert('&cont=', s, p);
    memo1.Lines[i] := 'row=' + s;
    end;
end;
Если строк 100500 то нужно писать пооптимальнее
1
0 / 0 / 0
Регистрация: 11.07.2018
Сообщений: 34
02.05.2020, 17:50 14
Спасибо! Работает отлично с 234-мя строками!
0
02.05.2020, 17:50
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.05.2020, 17:50
Помогаю со студенческими работами здесь

Замена символов в Memo
Суть задачи такова: Текст поданый в поле Memo1 надо перевести в заданный вид, используя для...

Замена текста в Memo
Здравствуйте. имеется текст в мемо T 1480 -1928 2732 0 270 0 T 1441 -2062 2734 0 90 0 CT 1224...

Поиск и замена текста в memo
Нужна помощь в написании небольшой программы. Есть текстовый документ с которого загружается...

Работа с текстом в memo, поиск и замена
Дано фрагмент текста. Сформировать текст, в котором все слова должны быть заменены на количество...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru