Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 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™

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™

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™

min@y™ (статус: Доктор наук), 21 апреля 2011, 20:51 [#88]:

Завтра.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
Кудя

Кудя (статус: Посетитель), 21 апреля 2011, 20:58 [#89]:

получилось(рекусивный поиск) ^^ Только после поиска папок неполучается поиск файлов, программа запросто недоходит до поиска файлов, хз почему, но не доходит.
Think Different. (c)
min@y™

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] [Следующая »]

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 30 апреля 2026, 16:39
Выполнено за 0.04 сек.