Jak hledat soubory a složky pomocí Delphi

Při hledání souborů je často užitečné a nutné prohledávat podsložky. Zde se dozvíte, jak používat DelphiSíla vytvořit jednoduchý, ale výkonný, najít-vše-odpovídající-soubory projektu.

Projekt hledání masky souborů / složek

Následující projekt nejen umožňuje vyhledávat soubory prostřednictvím podsložek, ale také umožňuje snadno určit atributy souborů, jako je název, velikost, datum změny atd. takže uvidíte, kdy vyvolat dialog Vlastnosti souboru z Průzkumník Windows. Zejména ukazuje, jak rekurzivně prohledávat podsložky a sestavit seznam souborů, které odpovídají určité maske souboru. Technika rekurze je definována jako rutina, která se nazývá uprostřed svého kódu.

Abychom porozuměli kódu v projektu, musíme se seznámit s dalšími třemi metodami definovanými v jednotce SysUtils: FindFirst, FindNext a FindClose.

FindFirst

FindFirst je inicializační volání pro zahájení podrobného postupu vyhledávání souborů pomocí Volání rozhraní Windows API. Hledání hledá soubory, které odpovídají specifikátoru cesty. Cesta obvykle obsahuje zástupné znaky (* a?). Parametr Attr obsahuje kombinace atributů souboru pro řízení vyhledávání. Konstanty atributů souborů rozpoznané v Attr jsou:

instagram viewer
faAnyFile (jakýkoli soubor), faDirectory (adresáře), faReadOnly (pouze pro čtení souborů), faHidden (skryté soubory), faArchive (archivní soubory), faSysFile (systémové soubory) a faVolumeID (soubory ID svazku).

Pokud FindFirst najde jeden nebo více odpovídajících souborů, vrátí 0 (nebo chybový kód pro selhání, obvykle 18) a vyplní Rec do informací o prvním odpovídajícím souboru. Abychom mohli pokračovat ve vyhledávání, musíme použít stejný záznam TSearcRec a předat jej funkci FindNext. Po dokončení hledání musí být volána procedura FindClose, aby se uvolnily interní zdroje Windows. TSearchRec je záznam definovaný jako:

Když je nalezen první soubor, je vyplněn parametr Rec a váš projekt může použít následující pole (hodnoty).
. Attr, atributy souboru, jak je popsáno výše.
. název obsahuje řetězec, který představuje název souboru, bez informací o cestě
. Velikost v nalezených souborech v bajtech.
. Čas ukládá datum a čas změny souboru jako datum souboru.
. FindData obsahuje další informace, například čas vytvoření souboru, poslední přístupový čas a dlouhé i krátké názvy souborů.

Najdi další

Funkce FindNext je druhým krokem v podrobném postupu prohledávání souborů. Musíte předat stejný vyhledávací záznam (Rec), který byl vytvořen voláním FindFirst. Návratová hodnota z FindNext je pro úspěch nulová nebo chybový kód pro jakoukoli chybu.

FindClose

Tento postup je požadovaným ukončovacím hovorem pro FindFirst / FindNext.

Hledání rekurzivní masky souborů v Delphi

Toto je projekt „Hledání souborů“, jak se zobrazuje v době spuštění. Nejdůležitější komponenty ve formuláři jsou dvě editační pole, jedno seznamové pole, zaškrtávací políčko a tlačítko. Úpravná pole se používají k určení cesty, kterou chcete vyhledat, a masky souboru. Nalezené soubory se zobrazí v poli Seznam a pokud je zaškrtnuté políčko, budou všechny podsložky zkontrolovány, zda neobsahují odpovídající soubory.

Níže je malý fragment kódu z projektu, jen aby se ukázalo, že vyhledávání souborů pomocí Delphi je stejně snadné, jak může být: