![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Файлы
Александр © (2002-07-28 18:37:00)Здравствуйте. Я столкнулся со следующей задачей. Мне надо найти все файлы по маске в определенном каталоге (включая подкаталоги) и найти (если есть) и заменить например символ "р" на "х".
Я нашел все файлы по нужной мне маске в нужной папке включая подкаталоги, выяснил что в них есть этот символ "р" и в ListBox1 занес полный пусть с именем файла. Но я не догоняю как теперь заменить?
Как это сделать? Ч пробовал при помощи ReplaceDialog но это думаю смешно:)
Александр (2002-07-30 13:51:00) [1]Как же я жутко тормозил. Все разобрался. Спасибо:)
Александр (2002-07-30 12:52:00) [2]Бр..............
Не получается. Что только не пробовал. И заменял Мемо на Едит и менял все местами ну никак..все ошибку пишет. Не выходит. Так с ума сойти можно:((((((((((((((((
MetalFan (2002-07-30 10:12:00) [3]используй вместо TMemo TEdit
или введи еще одну переменную типа string
смотри:
procedure Insert(Source: string; var S: string; Index: Integer);
-так описана процедура Insert...
делай выводы :))))
Александр (2002-07-30 00:58:00) [4]Извините, но я так и не понял как правильно должен выглядеть этот код. Не получается.
alena.svt (2002-07-29 23:09:00) [5]А еще бы типы совпадали!!!
string и strings.
Александр (2002-07-29 22:58:00) [6]Вот и глухо. На вопрос, который всем известен ответ нужно искать его 3 недели:(
Александр (2002-07-29 13:47:00) [7]В обоих случаях еще есть ошибка в ствроке
Insert(TempStr, k , Memo2.Text);
[Error] Unit1.pas(103): Incompatible types
MetalFan (2002-07-29 11:52:00) [8]
> Александр ©
я вижу такой выход:
копировать строку из ричэдита во временную, анализировать ее, заменять что нужно и возвращать в ричедит обратно.
var i: integer;
k: integer;
g: integer;
TempStr:String;
begin
for i:= 0 to ListBox1.Items.Count - 1 do
begin
RichEdit1.Lines.LoadFromFile(ListBox1.Items[g]);
k:=Pos(Memo1.Text,RichEdit1.Lines[g]);
if k <>0 then
begin
TempStr:=RichEdit1.Lines[g];
Delete(TempStr, k , length (Memo1.Text));
Insert(TempStr, k , Memo2.Text);
RichEdit1.Lines[g]:=TempStr;
end;
end;
Александр (2002-07-29 11:36:00) [9]Привожу кусок кода. Не работает. На выделенной строчке пишет ошибку.
var i: integer;
k: integer;
g: integer;
begin
for i:= 0 to ListBox1.Items.Count - 1 do
begin
RichEdit1.Lines.LoadFromFile(ListBox1.Items[g]);
k:=Pos(Memo1.Text,RichEdit1.Lines[g]);
if k <>0 then
begin
Delete(RichEdit1.Lines[g], k , length (Memo1.Text));
Insert(RichEdit1.Lines[g], k , Memo2.Text);
end;
end;
[Error] Unit1.pas(86): Constant object cannot be passed as var parameter
SVM (2002-07-29 09:04:00) [10]StringReplace
TTCustomDelphiMaster (2002-07-29 05:06:00) [11]
> Александр © (28.07.02 21:57)
> Это я уже давно сделал. Но как мне нацти кусок и заменитьь
> так и не понял. Стоит сразу заметить, что к справке меня
> посылать бесплозно..ни к чему хорошему это не приводит:(
Печально :(
А делается это примерно так:
k:= Pos("Delphi",StringList1.Items[i]);
if k<>0 then
begin
Delete(StringList1.Items[i],k,length("Delphi"));
Insert(StringList1.Items[i],k,"Дельфи");
end;
Александр (2002-07-29 00:19:00) [12]Спсибо, но это я уже все сделал.
У меня сейчас открыт текстовый файл в RichEdit1 и мне надо заменить в нем слово Delphi на Дельфи. Программно, без участия пользователя.
msalex (2002-07-29 00:13:00) [13]Можно заполнить ListBox именами файлов с нужным расширением,
послав ему соответствующее сообщение.
var
s:string;
...
ListBox1.Clear;
s:=DataDir+"*.расшырение"#0; // обязательно надо добавить к
// строке #0
ListBox1.Perform(LB_DIR, DDL_READWRITE, Longint(@s[1]));
Александр (2002-07-28 21:57:00) [14]Это я уже давно сделал. Но как мне нацти кусок и заменитьь так и не понял. Стоит сразу заметить, что к справке меня посылать бесплозно..ни к чему хорошему это не приводит:(
TTCustomDelphiMaster (2002-07-28 21:53:00) [15]И еще, советую воспользоваться объектом TStringList. У него есть такие полезные методы, как TStringList.LoadFromFile и TStringList.SaveToFile
TTCustomDelphiMaster (2002-07-28 20:55:00) [16]F1 - Pos, Copy, Delete, Insert и др. строковые функции
Александр (2002-07-28 20:44:00) [17]как айти и заменить текст?
TTCustomDelphiMaster (2002-07-28 20:22:00) [18]Александр © (28.07.02 19:39)
А в чем проблема? Читаешь файл, находишь текст (или все таки букву?), заменяешь, записываешь обратно. Что тут сложного?
Александр (2002-07-28 19:39:00) [19]Нет, мне не надо переименовывать имя файла, мне надо например в папке есть 10 тестовых файлов и во всех надо найти кусок текста и замнеить его на другой.
TTCustomDelphiMaster (2002-07-28 19:32:00) [20]MoveFileEx
MoveFile