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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.03.2011, 17:37   #1
s1s1s1
Пользователь
 
Регистрация: 28.09.2009
Сообщений: 63
По умолчанию StringReplace

Код:
 st := TStringList.Create;
          ts := TStringList.Create;
for i:=st.Count-1 downto 0 do 
if Pos('5555',st.Strings[i])>0  then
 for v:=ts.Count-1 downto 0 do
    if Pos('6',ts.Strings[v])>0  then
St[I]:= StringReplace(st[i],st[i],ts[v], [rfReplaceAll]);
заменяет,но одной строкой 1-ой /|\ как заменить следующие строки
|
s1s1s1 вне форума Ответить с цитированием
Старый 23.03.2011, 20:23   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

какова задача в целом? что на что надо заменить ?

Hint.. у объекта типа TSTringList есть свойстов .Text - там все строки вместе. Может его и использовать при замене?
Serge_Bliznykov вне форума Ответить с цитированием
Старый 24.03.2011, 08:35   #3
s1s1s1
Пользователь
 
Регистрация: 28.09.2009
Сообщений: 63
По умолчанию

два файла ,оба в StringList'e надо заменить все строчки в 1-ом где встречается '5' ,на строчки из второго где встречается '6' (чтобы из вторго брались строчки в цикле).
s1s1s1 вне форума Ответить с цитированием
Старый 24.03.2011, 08:48   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

примерно понял. поясните, пожалуйста для примера:
Код:
файл 1
ууу
еее 5
ww 555 w
ttt
g5

файл 2
t1
t2
t767
ку9
q6
что нужно получить?
Serge_Bliznykov вне форума Ответить с цитированием
Старый 25.03.2011, 16:16   #5
s1s1s1
Пользователь
 
Регистрация: 28.09.2009
Сообщений: 63
По умолчанию

файл 1
123ууу548 найти в тексте строки с ( ууу )
258686ууу и заменить их по очереди
859214723 строчками из 2-ого файла
147820369
ууу147852

именно строчками

файл 2
уу1458885 найти в тексте строки с ( уу )
t21478562 и заменить этими строчками по
t76714785 очереди в 1-ом файле ,только те
1458уу147 где есть ( ууу)
уу1478524
s1s1s1 вне форума Ответить с цитированием
Старый 27.03.2011, 11:41   #6
s1s1s1
Пользователь
 
Регистрация: 28.09.2009
Сообщений: 63
По умолчанию

кто подскажет?
s1s1s1 вне форума Ответить с цитированием
Старый 27.03.2011, 11:48   #7
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

немного подправлю ваш код:
Код:
  st := TStringList.Create;
  ts := TStringList.Create;
  for i := st.Count - 1 downto 0 do
  begin
    if Pos('5555', st.Strings[i]) > 0 then
    begin
      for v := ts.Count - 1 downto 0 do
      begin
        if Pos('6', ts.Strings[v]) > 0 then
          St[I] := StringReplace(st[i], st[i], ts[v], [rfReplaceAll]);
      end;
    end;
  end;
end;
Блоки кода begin..end не обязательны когда после then,do идёт только одна строка кода.
У вас их много.
Человек_Борща вне форума Ответить с цитированием
Старый 27.03.2011, 12:03   #8
s1s1s1
Пользователь
 
Регистрация: 28.09.2009
Сообщений: 63
По умолчанию

теперь выдает ошибку на эту строку
Код:
 St[I]:= StringReplace(st[i],st[i],ts[v], [rfReplaceAll]);
s1s1s1 вне форума Ответить с цитированием
Старый 27.03.2011, 12:42   #9
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

А ошибку показывать не судьба?
Человек_Борща вне форума Ответить с цитированием
Старый 27.03.2011, 14:16   #10
s1s1s1
Пользователь
 
Регистрация: 28.09.2009
Сообщений: 63
По умолчанию

Debugger exception notification

Project Project1 raised exception class Eaccessviolation with message access violation at adress 0049aa2c in module Project1.exe. read of adress 00000000,
Process stopped. Use Step or Run to continue.
s1s1s1 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Почему ошибка? [DCC Error] main.pas(99): E2250 There is no overloaded version of 'StringReplace' ... TwiX Общие вопросы Delphi 5 19.11.2009 03:25
Не заменяет StringReplace Alex Cones Общие вопросы Delphi 2 03.09.2009 21:00