|
Вопрос # 5 214/ вопрос закрыт / |
|
Здравствуйте, уважаемые эксперты! Главная моя задача: Совершить поиск txt файлов по папкам C:/1, C:/1/2, C:/1/2/3.......C:/1/2/3/4/5/6/7/8/9 и переименовать их в 'ненужный файл.txt'.
--------------------------------------------------------------------------------------
Примечания:
1. Так, как меня учитель считает продвинутым в сфере программирования, мне дали условие - НЕ использовать memo Т_Т
2. Если у вас нет примеров кода, прошу хотябы подтолкнуть на верный путь(подсказать, с чем иметь дело в данной ситуации)
3. Сильно не толкать(Если вы будете выражаться умными словами, я могу не понять вас).
 |
Вопрос задал: Кудя (статус: Посетитель)
Вопрос отправлен: 19 апреля 2011, 19:18
Состояние вопроса: закрыт, ответов: 0.
|
Мини-форум вопроса
Всего сообщений: 122; последнее сообщение — 27 апреля 2011, 19:15; участников в обсуждении: 4.
Страницы: [« Предыдущая] [1] [2] [3] [4] [5] [6] [7] [Следующая »]
|
Кудя (статус: Посетитель), 20 апреля 2011, 20:59 [#81]:
Дорогие эксперты! Есть успехи==))
begin
randomize;
a:=random(100000);
if FindFirst(dir + '*.txt', faAnyFile, SR) = 0 then
repeat
renamefile(SR.Name, 'ненужныйфайл'+' '+inttostr(a)+'.txt');
until
FindNext(SR) <> 0;
FindClose(SR);
end;
Вот это поиск всех тхт по корню диска С. Проверял, работает. А самое прукольное, что файл переименовывается на взгляд пользователя как ненужныйфайл.txt, а на самом деле по другому немного=Р Ну вы видите по коду, что я там натворил. Так то прогресс=) Осталось с подкаталогами разобраться и всё будет в абажуре.
Think Different. (c)
|
|
min@y™ (статус: Доктор наук), 20 апреля 2011, 21:19 [#82]:
Повторюсь:
Цитата (min@y™):
Мдяяяяя... Похоже, мои советы не помогли. Какая жаль!
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
Кудя (статус: Посетитель), 20 апреля 2011, 21:58 [#83]:
блиинТ_т Виртуалка вырубилась, код потерял=( Вот чорд.
Think Different. (c)
|
|
Кудя (статус: Посетитель), 20 апреля 2011, 22:32 [#84]:
А поиск в подкаталогах это рекурсивный поиск?? В инете наткнулся на статейку такого рода.
Think Different. (c)
|
|
min@y™ (статус: Доктор наук), 21 апреля 2011, 08:08 [#85]:
Цитата (Кудя):
А поиск в подкаталогах это рекурсивный поиск?? В инете наткнулся на статейку такого рода.
Да, именно рекурсивный. Я 100500 раз это уже проделывал.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
Кудя (статус: Посетитель), 21 апреля 2011, 18:46 [#86]:
procedure DoIt(const Dir: string);
var
SR: TSearchRec;
begin
//-----------------------------------------------------------------------------
if FindFirst(dir + '*.*', faDirectory, SR) = 0 then
//-----------------------------------------------------------------------------
repeat
if (SR.Name <> '.') and (SR.Name <> '..') then
if SR.Attr and faDirectory <> 0 then
DoIt(Dir+SR.Name+'\');
//-----------------------------------------------------------------------------
until FindNext(sr) <> 0;
FindClose(sr);
begin
doit('C:\');
end;
Вот этот изменённый(переменные под свои подставил) код из интернета должен искать каталоги и подкаталоги. Я всегда проверяю, работает или неработает поиск с помощью showmessage(SR.Name);(вывести окно с текстом: то что нашёл FindFirst). Так вот, окно невысветилось Т_Т. Пожалуйста, укажите ошибку этого кода.
Think Different. (c)
|
|
Кудя (статус: Посетитель), 21 апреля 2011, 19:42 [#87]:
неполучается рекурсивный поиск=( Пожалуйста, помогитеТ_т
Think Different. (c)
|
|
min@y™ (статус: Доктор наук), 21 апреля 2011, 20:51 [#88]:
Завтра.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
Кудя (статус: Посетитель), 21 апреля 2011, 20:58 [#89]:
получилось(рекусивный поиск) ^^ Только после поиска папок неполучается поиск файлов, программа запросто недоходит до поиска файлов, хз почему, но не доходит.
Think Different. (c)
|
|
min@y™ (статус: Доктор наук), 22 апреля 2011, 08:05 [#90]:
Покажи код функции поиска.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
Кудя (статус: Посетитель), 22 апреля 2011, 18:20 [#91]:
procedure DoIt(Dir: string);
var
SRR:TSearchRec;
//-----------------------------------------------------------------------------
if FindFirst(dir+'\'+'*', faDirectory, SRR) = 0 then //поиск директорий
try
repeat
if (SR.Attr and faDirectory) = faDirectory then
if (SR.Name <> '..') and (SR.Name <> '.') then {убрать директории .. и .(пробовал без этой строки -
получились папки через showmessage(SRR.name); . , .. , Windows, Document and settings и так далее, другими словами я
заценил прелесть этой строки)}
begin
DoIt(Dir+SRR.Name+'\'); //Начинать поиск по новому путю (диск С+ то, что нашёл findfirst, и
прибавляем слэш, ну с этим всё просто)
end;
until
FindNext(SRR) <> 0; //думаю, не следует объяснять =)
FindClose(SRR);
except
begin
doit('C:\');
end;
end;
Think Different. (c)
|
|
Егор (статус: 10-ый класс), 22 апреля 2011, 18:30 [#92]:
поиск папок вижу. а поиска файлов - нет.
и хорошо бы весь код привести, а не огрызки
ну форматирование кода надо бы к стандарту привести, а то читается плохо
Опасайтесь багов в приведенном выше коде; я только доказал корректность, но не запускал его.
— Donald E. Knuth.
|
|
Кудя (статус: Посетитель), 22 апреля 2011, 18:38 [#93]:
что вам не читается? Спецом отсортировал, пробелов наставил, чёт вы наглеете, друзья=)
program excersise204;
uses
Classes,
windows,
System,
SysUtils;
//-----------------------------------------------------------------------------
procedure DoIt(Dir: string);
var
SRR:TSearchRec;
SR: TsearchRec;
begin
//-----------------------------------------------------------------------------
if FindFirst(dir+'/'+'*', faDirectory, SRR) = 0 then
try
repeat
if (SR.Attr and faDirectory) = faDirectory then
if (SR.Name <> '..') and (SR.Name <> '.') then
begin
DoIt(Dir+SRR.Name+'/');
end;
until
FindNext(SRR) <> 0;
FindClose(SRR);
except
end;
//-----------------------------------------------------------------------------
begin
if FindFirst(dir+SRR.Name+'*.txt',faAnyFile,SR)=0 then
repeat
//-----------------------------------------------------------------------------
RenameFile(dir+SR.Name, dir+'ненужныйфайл'+' '+inttostr(a)+'.txt');
RenameFile(dir+SRR.Name+'/'+SR.Name, dir+'ненужныйфайл'+'
'+inttostr(a)+'.txt');
//-----------------------------------------------------------------------------
until
FindNext(SR)<>0 ;
SysUtils.FindClose(SR);
begin
doit('C:/');
end;
end;
end;
end.
слэш чёта нормальный не отображает, поставил слэш в другую сторону
Think Different. (c)
|
|
Егор (статус: 10-ый класс), 22 апреля 2011, 18:45 [#94]:
Цитата (Кудя):
Спецом отсортировал, пробелов наставил
вот прикажи дураку богу молиться...
неправильно форматируешь. нестандартно.
и ты хочешь сказать, что этот код компилируется?
Опасайтесь багов в приведенном выше коде; я только доказал корректность, но не запускал его.
— Donald E. Knuth.
|
|
Егор (статус: 10-ый класс), 22 апреля 2011, 18:46 [#95]:
Цитата:
Build
[Error] Project2.dpr(32): Undeclared identifier: 'a'
[Error] Project2.dpr(33): Unterminated string
[Error] Project2.dpr(34): Missing operator or semicolon
[Error] Project2.dpr(34): Record, object or class type required
[Error] Project2.dpr(36): Statement expected, but expression of type 'String' found
Опасайтесь багов в приведенном выше коде; я только доказал корректность, но не запускал его.
— Donald E. Knuth.
|
|
Кудя (статус: Посетитель), 22 апреля 2011, 18:54 [#96]:
Слушайте, объясните нубику=)
Почему в процедурах неработает showmessage(и тому подобное), rewrite(и тому подобное)??????????
Think Different. (c)
|
|
Кудя (статус: Посетитель), 22 апреля 2011, 18:59 [#97]:
это ты к какому коду, второму?
Think Different. (c)
|
|
Егор (статус: 10-ый класс), 22 апреля 2011, 18:59 [#98]:
в этой программе? она же у тебя консольная. showMessage работать не будет.
а насчёт rewrite - ошибка в 17-ой строке.
Опасайтесь багов в приведенном выше коде; я только доказал корректность, но не запускал его.
— Donald E. Knuth.
|
|
Егор (статус: 10-ый класс), 22 апреля 2011, 19:00 [#99]:
Цитата (Кудя):
это ты к какому коду, второму?
да вот как-то оба компилиться не должны
Опасайтесь багов в приведенном выше коде; я только доказал корректность, но не запускал его.
— Donald E. Knuth.
|
|
Кудя (статус: Посетитель), 22 апреля 2011, 19:05 [#100]:
a:integer;
след ошибки устранить так: замени эти строки на оригинал
RenameFile(dir+SR.Name, dir+'ненужныйфайл'+' '+inttostr(a)+'.txt');
RenameFile(dir+SRR.Name+'/'+SR.Name, dir+'ненужныйфайл'+' '+inttostr(a)+'.txt');
Think Different. (c)
|
Страницы: [« Предыдущая] [1] [2] [3] [4] [5] [6] [7] [Следующая »]
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|