Sign in Join
Wiki copytemporary

FindAllFiles/fi

English · Español · Français · Polski · Suomi · Русский

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:

pascal
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:

pascal
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:

pascal
  // Ä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);

Note: Jos halutaan käyttää tätä funktiota komentoriviohjelmassa niin lisäämällä projektin vaatimuksiin LCLBase niin silloin ei tarvita koko LCL-kirjastoa


From the Free Pascal wiki, page "FindAllFiles/fi", as it stood on 2020-02-15 after a change by Trev, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's Licensing page. If you have concerns about this material, message the admin.

Revision 1, last changed by WikiArchive .

Talk about this page

Nobody has opened a bench for this page yet. Sign in to open one.