Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2010.03.28;
Скачать: CL | DM;

Вниз

Compare Files   Найти похожие ветки 

 
Scot Storch   (2010-01-29 16:04) [0]

Поставленая задача: сравнить содержимое двух папок (условно Target и Source). Вывести список файлов, которые есть в папке Target но нет в папке Source.

P.S. Если в папке Target лежит файл как Target\1\1.dat а в папке Source он находится как Source\1.dat считать, что файла нет.

Сделал так:


procedure ScanDirTarget(const sDirTarget, sDirSource: string);
var
 nRes: Integer;
 sFileFound: string;
 sRec: TSearchRec;
begin
 nRes := FindFirst(sDirTarget + "\*.*", faAnyFile, sRec);
 while nRes = 0 do
 begin
   if (sRec.Name <> ".") and (sRec.Name <> "..") then
   begin
     if (sRec.Attr and faDirectory) = faDirectory then
       ScanDirTarget(sDirTarget + "\" + sRec.Name, sDirSource + "\" +
         sRec.Name)
     else
     begin
       sFileFound := sDirSource + "\" + sRec.Name;
       if not FileExists(sFileFound) then
         form6.ListBox3.Items.Add(sFileFound)
     end;
   end;
   nRes := FindNext(sRec);
 end;
 FindClose(sRec);
end;


Может можно какие-то моменты упростить или что-то не учел. Вобщем, хотелось бы услышать критику.


 
DVM ©   (2010-01-29 16:09) [1]


>  Вобщем, хотелось бы услышать критику.



> form6.ListBox3.Items.Add(sFileFound)

нехорошо

лучше так:

procedure ScanDirTarget(const sDirTarget, sDirSource: string; AList: TStrings);

...

AList.Add(sFileFound);


 
Virgo_Style ©   (2010-01-29 16:15) [2]

Вместо ... +"\"  я бы написал IncludeTrailingPathDelimiter(...)

try-finally вроде недавно где-то обсуждалось применительно именно к findfirst...findclose.


 
12 ©   (2010-01-29 16:16) [3]

ну а где сравнение с 1.dat ?


 
Игорь Шевченко ©   (2010-01-29 16:49) [4]

а нафиг кучу веток заводить ?
http://delphimaster.net/view/2-1264681015/



Страницы: 1 вся ветка

Текущий архив: 2010.03.28;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.015 c
15-1263079904
Германн
2010-01-10 02:31
2010.03.28
Скончался автор "Ежика в тумане" Сергей Козлов


3-1237104687
joomler
2009-03-15 11:11
2010.03.28
Как сделать поиск по нескольким полям в базе?


15-1262855052
Александр Иванов
2010-01-07 12:04
2010.03.28
Настройка SSL в IIS 6.0


2-1264669670
Pavel
2010-01-28 12:07
2010.03.28
Пауза между запросами в Indy


15-1262420654
Дмитрий С
2010-01-02 11:24
2010.03.28
Вы довольны прошедем годом?