Poniższy artykuł przedstawia w jaki sposób wyszukiwać pliki na dysku według podanej maski, czasu utworzenia czy rozmiaru
Wyszukiwanie plików w Delphi opiera się o rekord TSearchRec. Jego budowa przedstawia się następująco:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
type TSearchRec = record Time: Integer; Size: Integer; Attr: Integer; Name: TFileName; ExcludeAttr: Integer; FindHandle: THandle; FindData: TWin32FindData; end; |
Tłumaczenie parametrów :
Time – data utworzenia
Size – rozmiar pliku
Attr – atrybuty pliku :
faReadOnly – Tylko do odczytu
faHidden – Ukryty
faSysVolume – Systemowy
faArchive – Zarchiwizowany
faAnyFile – Zwykły plik
faDirectory – Katalog
faVolumeID – Etykieta
FindHandle – znaleziony uchwyt
FindData – zawiera informacje o pliku:
dwFileAttributes – Atrybuty pliku
ftCreateionTime – Data utworzenia
ftLastWriteTime – Data ostatniej modyfikacji
ftLastAccessTime – Data ostatniego korzystania z pliku
Do wyszukania pliku posłużymy się poleceniem FindFirst np.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
var Info : TSearchRec; Znaleziono : Integer; begin Znaleziono := FindFirst('C:*.*', faAnyFile, Info); while (Znaleziono = 0) do begin ListBox1.Items.Add('C:' + Info.Name); // zapisujemy nazwę znalezionego pliku Znaleziono := FindNext(Info); // szukamy następnego end; FindClose(Info); // kończymy szukanie end; |
Pierwsza zmienna polecenia FindFirst określa ścieżkę i maskę pliku, druga określa atrybut pliku, a trzecia nasz Rekord, nazwałem go Info. Zmienna znaleziono informuje nas o liczbie plików o podanych przez nas parametrach znalezionych na dysku. Polecenie FindNext umożliwia dalsze przeszukiwanie pliku. Aby ograniczyć wyniki wyszukiwania do plików np. o określonym rozmiarze musimy dodać warunek :
1 2 3 4 5 6 7 |
... If Info.Size = XXX then ListBox1.Items.Add('C:' + Info.Name); ... |