Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.08.12;
Скачать: [xml.tar.bz2];

Вниз

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

 
Александр   (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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.007 c
1-35269
V.Turecky
2002-07-31 12:53
2002.08.12
Информация о памяти.


3-35159
Ag2002
2002-07-22 12:40
2002.08.12
Excel


3-35166
Natalie
2002-07-22 21:40
2002.08.12
сохранение данных в таблице


3-35183
alextov
2002-07-23 10:41
2002.08.12
Как присвоить TField.NewValue значение null ?


3-35180
Explorer
2002-07-23 09:40
2002.08.12
Как лучше и правильней





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский