Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2010.03.28;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.006 c
3-1237110214
Den
2009-03-15 12:43
2010.03.28
Как узнать номер добавленной записи


15-1263202280
Игорь
2010-01-11 12:31
2010.03.28
Драйвер под Windows 7


15-1262879478
Kerk
2010-01-07 18:51
2010.03.28
Проект минздравсоцразвития РФ


2-1264694075
Jimmy
2010-01-28 18:54
2010.03.28
Задержка


2-1264361195
Дмитрий
2010-01-24 22:26
2010.03.28
Scrollbar на panel





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский