FindAllFiles/fi
│
English (en) │
español (es) │
suomi (fi) │
français (fr) │
polski (pl) │
русский (ru) │
Hae kaikki tiedostot
Lazaruksen käännösyksikkö (unit) LazFileUtils (Joka sisältää UTF-8 korvaukset FPC RTL koodille ja lisäksi siellä on tiedoston/hakemiston(kansion) käsittelyä)
Katso myös:
- http://lazarus-ccr.sourceforge.net/docs/lcl/fileutil/findallfiles.html
- http://lazarus-ccr.sourceforge.net/docs/lcl/fileutil/tfilesearcher.html
procedure FindAllFiles(AList: TStrings; const SearchPath: String;
SearchMask: String = ''; SearchSubDirs: Boolean = True; DirAttr: Word = faDirectory);
function FindAllFiles(const SearchPath: String; SearchMask: String = '';
SearchSubDirs: Boolean = True): TStringList;
Funktio ja aliohjelma FindAllFilesetsivät tiedostoja, jotka vastaavat SearchPath-hakemistossa olevaa hakumaskia ja jos ei pois suljeta niin myös sen alihakemistoja. Se palauttaa suorituksen jälkeen TStringList-tyyppisen merkkijono-olion tuloksena saatana olevilla tiedostonimillä.
Maskina voi olla yksi ainoa maski, jota voidaan käyttää FindFirst / FindNext -funktioissa tai se voi sisältää luettelon maskeista, jotka on erotettu puolipisteellä (;).
Maskissa olevat välilyönnit käsitellään kirjaimina.
Tarjolla on kaksi ylikuormitettua versiota tästä rutiinista erilaisiin tarkoituksiin. Ensimmäinen on aliohjelma (procedure) ja se olettaa, että vastaanottava TStrings- (tai TStringList-) tyyppinen merkkijono-olio on jo luotu. Toinen on funktio joka luo TStringList-tyyppisen merkkijono-olion sisäisesti ja palauttaa sen funktion tulokseksi. Kummassakin tapauksessa TStringList-tyyppinen merkkijono-olio on purettava kutsumalla olion free metodia.
Esimerkki:
uses
..., LazFileUtils, ...
var
PascalFiles: TStringList;
begin
PascalFiles := TStringList.Create;
try
FindAllFiles(PascalFiles, LazarusDirectory, '*.pas;*.pp;*.p;*.inc', true); //Etsii esim. kaikki pascal lähdekooditiedostot
ShowMessage(Format('Löydettiin %d kpl Pascal lähdekooditiedostoja', [PascalFiles.Count]));
finally
PascalFiles.Free;
end;
// Tai
begin
//No need to create the stringlist; the function does that for you
PascalFiles := FindAllFiles(LazarusDirectory, '*.pas;*.pp;*.p;*.inc', true); //Etsii esim. kaikki pascal lähdekooditiedostot
try
ShowMessage(Format('Löydettiin %d kpl Pascal lähdekooditiedostoja', [PascalFiles.Count]));
finally
PascalFiles.Free;
end;
TÄRKEÄ HUOMAUTUS: Funktio "FindAllFiles" luo TStringList-tyyppisen merkkijono-olion sisäisesti. Tämä saattaa näyttää erittäin kätevältä ensi silmäyksellä, mutta "muistin vuotaminen" (memory leaks) on erittäin helppoa näin:
// Älä koskaan tee tätä !!!! - Sillä tässä tapauksessa ei ole tapaa vapauttaa TStringList-tyyppistä
// merkkijono-oliota jonka FindAllFiles luo.
Listbox1.Items.Assign(FindAllFiles(LazarusDirectory, '*.pas;*.pp;*.p;*.inc', true);