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

Вниз

Файлы   Найти похожие ветки 

 
Александр ©   (2002-07-28 18:37) [0]

Здравствуйте. Я столкнулся со следующей задачей. Мне надо найти все файлы по маске в определенном каталоге (включая подкаталоги) и найти (если есть) и заменить например символ "р" на "х".
Я нашел все файлы по нужной мне маске в нужной папке включая подкаталоги, выяснил что в них есть этот символ "р" и в ListBox1 занес полный пусть с именем файла. Но я не догоняю как теперь заменить?
Как это сделать? Ч пробовал при помощи ReplaceDialog но это думаю смешно:)


 
TTCustomDelphiMaster ©   (2002-07-28 19:32) [1]

MoveFileEx
MoveFile


 
Александр ©   (2002-07-28 19:39) [2]

Нет, мне не надо переименовывать имя файла, мне надо например в папке есть 10 тестовых файлов и во всех надо найти кусок текста и замнеить его на другой.


 
TTCustomDelphiMaster ©   (2002-07-28 20:22) [3]

Александр © (28.07.02 19:39)
А в чем проблема? Читаешь файл, находишь текст (или все таки букву?), заменяешь, записываешь обратно. Что тут сложного?


 
Александр ©   (2002-07-28 20:44) [4]

как айти и заменить текст?


 
TTCustomDelphiMaster ©   (2002-07-28 20:55) [5]

F1 - Pos, Copy, Delete, Insert и др. строковые функции


 
TTCustomDelphiMaster ©   (2002-07-28 21:53) [6]

И еще, советую воспользоваться объектом TStringList. У него есть такие полезные методы, как TStringList.LoadFromFile и TStringList.SaveToFile


 
Александр ©   (2002-07-28 21:57) [7]

Это я уже давно сделал. Но как мне нацти кусок и заменитьь так и не понял. Стоит сразу заметить, что к справке меня посылать бесплозно..ни к чему хорошему это не приводит:(


 
msalex ©   (2002-07-29 00:13) [8]

Можно заполнить ListBox именами файлов с нужным расширением,
послав ему соответствующее сообщение.


var
s:string;
...
ListBox1.Clear;
s:=DataDir+"*.расшырение"#0; // обязательно надо добавить к
// строке #0
ListBox1.Perform(LB_DIR, DDL_READWRITE, Longint(@s[1]));


 
Александр ©   (2002-07-29 00:19) [9]

Спсибо, но это я уже все сделал.
У меня сейчас открыт текстовый файл в RichEdit1 и мне надо заменить в нем слово Delphi на Дельфи. Программно, без участия пользователя.


 
TTCustomDelphiMaster ©   (2002-07-29 05:06) [10]


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


 
SVM   (2002-07-29 09:04) [11]

StringReplace


 
Александр ©   (2002-07-29 11:36) [12]

Привожу кусок кода. Не работает. На выделенной строчке пишет ошибку.
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


 
MetalFan ©   (2002-07-29 11:52) [13]


> Александр ©

я вижу такой выход:
копировать строку из ричэдита во временную, анализировать ее, заменять что нужно и возвращать в ричедит обратно.


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 13:47) [14]

В обоих случаях еще есть ошибка в ствроке
Insert(TempStr, k , Memo2.Text);
[Error] Unit1.pas(103): Incompatible types


 
Александр ©   (2002-07-29 22:58) [15]

Вот и глухо. На вопрос, который всем известен ответ нужно искать его 3 недели:(


 
alena.svt   (2002-07-29 23:09) [16]

А еще бы типы совпадали!!!
string и strings.


 
Александр ©   (2002-07-30 00:58) [17]

Извините, но я так и не понял как правильно должен выглядеть этот код. Не получается.


 
MetalFan ©   (2002-07-30 10:12) [18]

используй вместо TMemo TEdit
или введи еще одну переменную типа string
смотри:
procedure Insert(Source: string; var S: string; Index: Integer);
-так описана процедура Insert...
делай выводы :))))


 
Александр ©   (2002-07-30 12:52) [19]

Бр..............
Не получается. Что только не пробовал. И заменял Мемо на Едит и менял все местами ну никак..все ошибку пишет. Не выходит. Так с ума сойти можно:((((((((((((((((


 
Александр ©   (2002-07-30 13:51) [20]

Как же я жутко тормозил. Все разобрался. Спасибо:)



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

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

Наверх




Память: 0.51 MB
Время: 0.014 c
4-35518
Dmk
2002-06-05 00:39
2002.08.12
DeviceContext


14-35437
Malder
2002-07-13 01:59
2002.08.12
Когда же форум доделают ?


4-35503
Yuri Btr
2002-05-31 15:01
2002.08.12
Убить приложение зная только его исполняемый файл


7-35481
sizmrebi
2002-05-23 17:32
2002.08.12
Matrix Printers


1-35310
MAN-IN-RED
2002-07-29 15:54
2002.08.12
Как можно сделать полупрозрачное окно?