Форум: "Основная";
Текущий архив: 2002.10.17;
Скачать: [xml.tar.bz2];
Вниз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;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.008 c