Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как создать список файлов? По аналогии с утилитой flist 
:(
    Опции темы
mkmv
Дата 2.6.2005, 14:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 2.6.2005

Репутация: нет
Всего: нет



есть такая утилитка - flist
Для постороения списка файлов по заданному пути.

делает файл следующего содержания:

Код

academ.sab            14.160      REPORTS/Shabl/       22.02.2005 13:18:12
akad_tmp.sab         4.788       REPORTS/Shabl/       22.02.2005 13:18:12
akadem.sab           42.442      REPORTS/Shabl/       22.02.2005 13:18:12
att_plan.sab          19.960      REPORTS/Shabl/       22.02.2005 13:18:14
config.fpw              25                                              22.02.2005 13:18:16
cont1.sab              101.185     REPORTS/Shabl/       22.02.2005 13:18:12
cont2.sab              102.357     REPORTS/Shabl/       22.02.2005 13:18:12
ConvJpg.exe          185.856     BMP/obmenbmp/      22.02.2005 13:18:12

Как написать что-либо аналогичное? + еще я хочу добавить после даты - контрольную сумму.

Код

ConvJpg.exe          185.856     BMP/obmenbmp/      22.02.2005 13:18:12    CHECKSUM


Может у кого есть мысли?

Это сообщение отредактировал(а) mkmv - 2.6.2005, 14:42
PM MAIL   Вверх
_hunter
Дата 2.6.2005, 14:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 15
Всего: 98



делай рекурсивный обход каталогов ( начиная с текущего ) и выводи относительный путь.
сумму тоже не проблема приписать...


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
mkmv
Дата 2.6.2005, 14:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 2.6.2005

Репутация: нет
Всего: нет



smile

smile Или хотя бы намек - с пом. каких функций

Сумму уже написал.

Это сообщение отредактировал(а) mkmv - 2.6.2005, 14:55
PM MAIL   Вверх
_hunter
Дата 2.6.2005, 15:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 15
Всего: 98



FindFirst() / FindNext()
( ну и поиск по форуму: тут таких тем поднималось... )


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
X-Vlad
Дата 2.6.2005, 16:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 570
Регистрация: 10.4.2002
Где: Украина, Львов

Репутация: 1
Всего: 5



вот что то типа этого.
Код

procedure TForm1.Button1Click(Sender: TObject);
var
 sr: TSearchRec;
 filepath:string;
 MyFileName, MyFileSize, MyFileTime, MyFileCheckSum:string;
begin
try
 filepath:='c:\windows';
 if filepath[length(filepath)]<>'\' then
  filepath:=filepath+'\';
 if FindFirst(filepath+'*.*', faanyfile, sr) = 0 then
  begin
   repeat
    if sr.Attr <> faDirectory then
     begin
      MyFileName:=sr.Name;
      MyFileName:=sr.Name;
      MyFileSize:=inttostr(sr.Size);
      MyFileTime:=DateTimeToStr(FileDateToDateTime(FileAge(filepath+sr.Name)));
      memo1.Lines.Add(MyFileName+'        '+MyFileSize+'       '+MyFileTime+'       '+FilePath);
     end
   until FindNext(sr) <> 0;
   FindClose(sr);
  end;
except
end;
end;


в коде есть ошибочка.. но у меня щас нету времени с этим разбиратся


--------------------
Хорошая штука - комп..:)
www.x-vlad.com
PM MAIL WWW ICQ   Вверх
mkmv
Дата 2.6.2005, 19:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 2.6.2005

Репутация: нет
Всего: нет



Спасибо! Ошибочку найду...не проблема. Вопрос - этот код строит лист по всем файлам\поддиректориям ну и т.д.??
Я как понял - нет smile Или в этом и есть ошибка?? ;)

Т.е. мне надо чтобы прога прочесала весь c:\windows до последнего файла+ указала ОТНОСИТЕЛЬНЫЙ путь к нему.

Типа:

explorer.exe 14.160 22.02.2005 13:18:12 находится в корне относительно C:\windows
shell32.dll 4.788 System32\ 22.02.2005 13:18:12 находится в C:\windows\System32


Это сообщение отредактировал(а) mkmv - 2.6.2005, 19:37
PM MAIL   Вверх
Albinos_x
Дата 2.6.2005, 19:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Evil Skynet
****


Профиль
Группа: Комодератор
Сообщений: 3288
Регистрация: 28.5.2004
Где: X-6120400 Y-1 4624650

Репутация: 26
Всего: 108



если не ошибаюсь папки он пропускает...нужно сделать функцию из этого кода, и при обнаружении папки, не пропускать её, а делать рекурсивный вызов этой функции...


--------------------
"Кто владеет информацией, тот владеет миром"    
Уинстон Черчилль
PM MAIL ICQ   Вверх
Quadr0
Дата 2.6.2005, 20:58 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











...

Это сообщение отредактировал(а) Quadr0 - 14.7.2011, 21:03
  Вверх
Albinos_x
Дата 2.6.2005, 22:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Evil Skynet
****


Профиль
Группа: Комодератор
Сообщений: 3288
Регистрация: 28.5.2004
Где: X-6120400 Y-1 4624650

Репутация: 26
Всего: 108



Цитата(Quadr0 @ 2.6.2005, 20:58)


Цитата
Цитата(Albinos_x @ 2.6.2005, )
если не ошибаюсь папки он пропускает...

ОН НЕ пропускает папки, если параметр задан faAnyFile и расширение *.*


если по внимательней посмотреть, то

Код
...
if FindFirst(filepath+'*.*', faanyfile, sr) = 0 then    
  begin    
   repeat    
    if sr.Attr <> faDirectory then    
     begin    
      MyFileName:=sr.Name;    
      MyFileName:=sr.Name;    
      MyFileSize:=inttostr(sr.Size);    
      MyFileTime:=DateTimeToStr(FileDateToDateTime(FileAge(filepath+sr.Name)));    
      memo1.Lines.Add(MyFileName+'        '+MyFileSize+'       '+MyFileTime+'       '+FilePath);    
     end    
   until FindNext(sr) <> 0;
...


В коде папки пропускаются (sr.Attr <> faDirectory) и не добавляются в список найденных файлов...

Цитата
Цитата(Albinos_x @ 2.6.2005, )
делать рекурсивный вызов этой функции...

Проще говоря, выдели поиск в отдельную процедуру и при обнаружении папки вызывай процедуру из самой процедуры:
Код

procedure SearchFiles(const Path: string);
var
...
begin
...
if ExtractFileExt(Sr.Name) = '.fld' then
  SearchFiles(Path + Sr.Name + '\'); //вызывает сама себя (рекурсивно)
end;


Именно про это я и говорил...

Цитата
нужно сделать функцию из этого кода, и при обнаружении папки, не пропускать её, а делать рекурсивный вызов этой функции...



--------------------
"Кто владеет информацией, тот владеет миром"    
Уинстон Черчилль
PM MAIL ICQ   Вверх
Quadr0
Дата 3.6.2005, 00:18 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











...

Это сообщение отредактировал(а) Quadr0 - 1.7.2011, 13:41
  Вверх
X-Vlad
Дата 3.6.2005, 13:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 570
Регистрация: 10.4.2002
Где: Украина, Львов

Репутация: 1
Всего: 5



измени код на:
Код

...
if FindFirst(filepath+'*.*', faanyfile, sr) = 0 then    
  begin    
   repeat    
      MyFileName:=sr.Name;    
      MyFileName:=sr.Name;    
      MyFileSize:=inttostr(sr.Size);    
      MyFileTime:=DateTimeToStr(FileDateToDateTime(FileAge(filepath+sr.Name)));    
      memo1.Lines.Add(MyFileName+'        '+MyFileSize+'       '+MyFileTime+'       '+FilePath);    
   until FindNext(sr) <> 0;
...



будет выводить все подряд. и папки тоже.

а ошибка у меня была в том что если sr.name='.' or sr.name='..' - то получить дату невозможно.. и прога вываливалась. поиграйся с этим . у меня просто времени нету smile работа, да еще и сесия началась )))))


--------------------
Хорошая штука - комп..:)
www.x-vlad.com
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0707 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.