Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.10.17;
Скачать: CL | DM;

Вниз

TStringList   Найти похожие ветки 

 
DeMoN-777 ©   (2002-10-07 18:06) [0]

Как в TStringList найти определённый текст(слово) и вставить после него свой текст(слово), а далше чтоб всё шло как и было. ?
Например есть текст "Маша сильно болеет туберкулёзом".
Мне надо после слова "Маша" вставить слово "очень", чтобы получилось "Маша очен сильно болеет туберкулёзом"


 
McSimm ©   (2002-10-07 18:14) [1]

Например так:
SL.Text := StringReplace(SL.Text, "Маша", "Маша очень", []);

Флаги в зависимости от задачи


 
Romkin ©   (2002-10-07 18:16) [2]

s := StringList1.Text;
mashaPos := ansipos("Маша", s);
if MashaPos > 0 then Insert(" очен",s,MashaPos);
StringList1.Text := s;
Так проще всего, имхо


 
DeMoN-777 ©   (2002-10-07 18:49) [3]

Не работает =(

procedure TForm1.BbStartClick(Sender: TObject);
var pos,i: integer;
S :String;

begin
BbStart.Enabled:=False;//


 
McSimm ©   (2002-10-07 18:58) [4]

Что именно не работает?

MmFind.Lines.Text может содержать #13#10

(кстати, где TStringList.Free ?)


 
TTCustomDelphiMaster ©   (2002-10-07 19:03) [5]

Что не работает?
А где TStringList.Free?
Вы умеете пользоваться средствами отладки Delphi?


 
DeMoN-777 ©   (2002-10-07 19:05) [6]

>TTCustomDelphiMaster © (07.10.02 19:03)
>Вы умеете пользоваться средствами отладки Delphi?

Нет, пока не дочитал.


 
DeMoN-777 ©   (2002-10-07 19:10) [7]

Не добовляет =(


 
TTCustomDelphiMaster ©   (2002-10-07 19:14) [8]

Тогда дочитайте, а потом продолжите. Кучу времени съэкономит.


 
DeMoN-777 ©   (2002-10-07 19:23) [9]

>TTCustomDelphiMaster © (07.10.02 19:14)

Естестенно.
Так-то я обычно сам со всем разбираюсь сам, только мне это срочно надо, а времени нет. Вот и прошу помощи мастеров.


 
TTCustomDelphiMaster ©   (2002-10-07 19:31) [10]


> а времени нет


Тогда скорее за книжку...


 
DeMoN-777 ©   (2002-10-07 20:45) [11]

>TTCustomDelphiMaster © (07.10.02 19:31)

Я же говорюто щас некогда.


 
Набережных С.   (2002-10-07 20:58) [12]

А что тебе компилятор говорит?


 
McSimm ©   (2002-10-08 11:34) [13]

Попробуем помочь (хотя это и сложно в данном случае, приходится угадывать)
--
if LbDir.Items.Count >= 0 then
Это что? Вероятнее всего это условие всегда истинно.
--
Структура лучше такая:
SL := TStringList.Create;
try
// все действия
finally
SL.Free
end;
--
Pos := ansipos(MmFind.Lines.Text, s);
А что мы ищем?
Попробуй так: ansipos(MmFind.Lines[0], s);


 
DeMoN-777 ©   (2002-10-08 13:22) [14]

>McSimm © (08.10.02 11:34)

Сасибо, разобрался, но я выбрал такой варинт, так как он кажется мне предпочтительней.

procedure TForm1.BbStartClick(Sender: TObject);
var pos,i: integer;
S :String;

begin
BbStart.Enabled:=False;//Делаем недоступной кнопку start
Progress.Progress:=0; //Онулируем прогрессбар
Progress.ForeColor:=ClBlack;//Делаем чёрным прогрессбар

if LbDir.Items.Count >=0 then
begin
Progress.MaxValue:=LbDir.Items.Count;//Махимальное значение прогрессбара
With TStringList.Create Do
begin
for i:=0 to LbDir.items.count-1 do
begin
LbDir.ItemIndex:=i;
LoadfromFile(LbDir.Items[LbDir.ItemIndex]);
s:=Text;
s:= StringReplace(s, MmFind.Lines.text,MmFind.Lines.text+MmPaste.lines.text,[rfReplaceAll]);
Text:=s;
Application.ProcessMessages;
Progress.Progress:=i+1;//Прибавляем процент к прогрессбару
SaveToFile(LbDir.Items[LbDir.ItemIndex]);
end;
Free;
end;
end;
Progress.ForeColor:=ClRed;
BbStart.Enabled:=True;
end;


 
Romkin ©   (2002-10-08 13:39) [15]

Мда... Прибил бы за free не в finally, сразу
Зачем тебе TStringList? насколько понимаю, читаешь файл, заменяешь кусок строки, потом записываешь обратно... Так и надо делать:
var
F1: File of byte;
s: string;
Len: integer;
begin
assignFile(f1,LbDir.Items[LbDir.ItemIndex]);
reset(f1);
Len := FileSize(f);
SetLength(s, len);
BlockRead(f1,s[0],len);
CloseFile(f1);
s:= StringReplace(s, MmFind.Lines.text,MmFind.Lines.text+MmPaste.lines.text,[rfReplaceAll]);
rewrite(f1);
Blockwrite(f1,s[0],length(s));
closefile(f1);
end;
Вроде должно прокатить


 
Romkin ©   (2002-10-08 13:41) [16]

блин, вместо s[0] надо s[1], совсем уже...



Страницы: 1 вся ветка

Текущий архив: 2002.10.17;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.013 c
1-56225
Новенький в Делфи
2002-10-08 01:59
2002.10.17
Вопрос по работе с 16-ичными файлами


7-56365
DenKop
2002-07-15 17:19
2002.10.17
COM port


6-56253
Novichek
2002-08-15 16:45
2002.10.17
Отправка писем


1-56148
-Drive
2002-10-06 17:39
2002.10.17
Потоки !!! Мастера помогите !!!


1-56129
NN_Nikita
2002-10-09 11:39
2002.10.17
TMtsDataModule - входной рараметр PChar