Главная страница
    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
3-35218
kserg@ukr.net
2002-07-23 15:50
2002.08.12
Есть ли DBGrid не отражающий


14-35408
Stanislav SM
2002-07-15 18:32
2002.08.12
Help WinApi


1-35248
smit_
2002-07-30 15:36
2002.08.12
TListBox


14-35422
SPeller
2002-07-16 22:59
2002.08.12
Вот и досиделси ....


14-35407
KiKo
2002-07-16 11:47
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский