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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> поиск новых файлов 
V
    Опции темы
golfV
Дата 27.11.2009, 11:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Доброго времени суток!

есть такая задача, сканировать директорию и выводить название файлов которые туда добавили после первого сканирования директории.
сделал поиск файлов и запись данных в файл.
Код

procedure TForm1.Button1Click(Sender: TObject);
Var SR:TSearchRec; 
FindRes:Integer; 

begin
ListBox1.Clear; 
FindRes:=FindFirst('c:\test\*.*',faAnyFile,SR);
While FindRes=0 do 
   begin
    
      if ((SR.Attr and faDirectory)=faDirectory) and
      ((SR.Name='.')or(SR.Name='..')) then
         begin
            FindRes:=FindNext(SR); 
            Continue; 
         end;

    ListBox1.Items.Add(SR.Name); 
    FindRes:=FindNext(SR); 

end;
FindClose(SR); 
ListBox1.Items.SaveToFile('C:\test.txt');
end;
end.


подскажите как можно сделать чтобы при следующем поиске он выводил только те файлы которые добавили в эту директорию. как я понимаю надо смотреть список который сохраняется в текстовом файле и если совпадений нет то тогда выводить. Но как это сделать немогу понять, подскажите кто знает как это реализовать?
PM MAIL   Вверх
Frees
Дата 27.11.2009, 11:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2233
Регистрация: 2.12.2005
Где: Екатеринбург

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



Код

procedure TForm1.Button1Click(Sender: TObject);
Var SR:TSearchRec; 
FindRes:Integer; 

begin
//ListBox1.Clear; 
FindRes:=FindFirst('c:\test\*.*',faAnyFile,SR);
While FindRes=0 do 
   begin
    
      if ((SR.Attr and faDirectory)=faDirectory) and
      ((SR.Name='.')or(SR.Name='..')) then
         begin
            FindRes:=FindNext(SR); 
            Continue; 
         end;

    if ListBox1.Items.IndexOf(SR.Name) < 0 then
       ListBox1.Items.Add(SR.Name)//раньше не было
    else 
     ;//уже был
       
    FindRes:=FindNext(SR); 

end;
FindClose(SR); 
ListBox1.Items.SaveToFile('C:\test.txt');
end;
end.



--------------------
Кольцов Виктор Владимирович
PM MAIL ICQ   Вверх
golfV
Дата 27.11.2009, 12:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



спасибо за ответ работает!
 но я наверно неправельно вопрос написал, тоесть замысел в том что есть текстовый файл где записаны файлы которые есть в этой директории, и при следущем поиске выводились бы в чистый лист бокс только те файлы которые недавно добавили, вот я незнаю может это можно сделать и без записи в файл результатов предыдущего поиска.

Добавлено через 11 минут
тоесть первый раз он выводит все файлы, второй раз когда я нажимаю на кнопку то он показывает в листбоксе только файлы который добавили в директорию, в третий раз он снова показывает только те файлы которых раньше небыло. если нетрудно подскажи как это сделать?
PM MAIL   Вверх
Frees
Дата 27.11.2009, 12:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2233
Регистрация: 2.12.2005
Где: Екатеринбург

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



Код

procedure TForm1.Button1Click(Sender: TObject);
Var SR:TSearchRec; 
FindRes:Integer; 
VFileList: TStrings;
begin
ListBox1.Clear; 
VFileList := TStringList.Create;
try
VFileList.LoadFromFile('C:\test.txt');
FindRes:=FindFirst('c:\test\*.*',faAnyFile,SR);
While FindRes=0 do 
   begin
    
      if ((SR.Attr and faDirectory)=faDirectory) and
      ((SR.Name='.')or(SR.Name='..')) then
         begin
            FindRes:=FindNext(SR); 
            Continue; 
         end;

    if VFileList.IndexOf(SR.Name) < 0 then
    begin
       ListBox1.Items.Add(SR.Name);//раньше не было
       VFileList.Add(SR.Name);
    end;
       
    FindRes:=FindNext(SR); 

end;
FindClose(SR); 
VFileList.Items.SaveToFile('C:\test.txt');
finally
VFileList.Free;
end;
end;
end.


Это сообщение отредактировал(а) Frees - 27.11.2009, 12:38


--------------------
Кольцов Виктор Владимирович
PM MAIL ICQ   Вверх
golfV
Дата 27.11.2009, 12:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Ругался на эту строчку, поставил вместо VFileList, ListBox1 вроде раотает
Код

VFileList.Items.SaveToFile('C:\test.txt');


Добавлено через 3 минуты и 32 секунды
но почему то только 1 раз срабатывает, вывел однир раз добавленые файлы, еще раз нажжимаеш и он показывает снова все. Ну идея понятно буду разбираться. 
Спасибо за ответ

Это сообщение отредактировал(а) golfV - 27.11.2009, 12:48
PM MAIL   Вверх
Frees
Дата 27.11.2009, 13:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2233
Регистрация: 2.12.2005
Где: Екатеринбург

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



Код

VFileList.SaveToFile('C:\test.txt');


Добавлено через 31 секунду
Цитата(golfV @  27.11.2009,  15:48 Найти цитируемый пост)
но почему то только 1 раз срабатывает

потому что сохранение не прошло..


--------------------
Кольцов Виктор Владимирович
PM MAIL ICQ   Вверх
golfV
Дата 27.11.2009, 13:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



всё работает!
Большое спасибо, очень помог.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

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

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

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

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


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

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


 




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


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

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