Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Файлы


Александр ©   (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


Наверх

Титульная страница Поиск, карта сайта Написать письмо