Difference between revisions of "FindAllFiles/fi"
(Created page with "{{FindAllFiles}} = Hae kaikki tiedostot = Lazaruksen käännösyksikkö (unit) LazFileUtils (Joka sisältää UTF-8 korvaukset FPC RTL koodille ja l...") |
m (Fixed syntax highlighting) |
||
Line 9: | Line 9: | ||
* http://lazarus-ccr.sourceforge.net/docs/lcl/fileutil/tfilesearcher.html | * http://lazarus-ccr.sourceforge.net/docs/lcl/fileutil/tfilesearcher.html | ||
− | < | + | <syntaxhighlight lang=pascal> |
procedure FindAllFiles(AList: TStrings; const SearchPath: String; | procedure FindAllFiles(AList: TStrings; const SearchPath: String; | ||
SearchMask: String = ''; SearchSubDirs: Boolean = True; DirAttr: Word = faDirectory); | SearchMask: String = ''; SearchSubDirs: Boolean = True; DirAttr: Word = faDirectory); | ||
Line 15: | Line 15: | ||
function FindAllFiles(const SearchPath: String; SearchMask: String = ''; | function FindAllFiles(const SearchPath: String; SearchMask: String = ''; | ||
SearchSubDirs: Boolean = True): TStringList; | SearchSubDirs: Boolean = True): TStringList; | ||
− | </ | + | </syntaxhighlight> |
[[Function|Funktio]] ja [[Procedure/fi|aliohjelma]] '''FindAllFiles'''etsivä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ä. | [[Function|Funktio]] ja [[Procedure/fi|aliohjelma]] '''FindAllFiles'''etsivä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ä. | ||
Line 27: | Line 27: | ||
'''Esimerkki:''' | '''Esimerkki:''' | ||
− | < | + | <syntaxhighlight lang=pascal> |
uses | uses | ||
..., LazFileUtils, ... | ..., LazFileUtils, ... | ||
Line 51: | Line 51: | ||
PascalFiles.Free; | PascalFiles.Free; | ||
end; | end; | ||
− | </ | + | </syntaxhighlight> |
'''TÄRKEÄ HUOMAUTUS:''' | '''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: | ''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. | + | <syntaxhighlight lang=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); | Listbox1.Items.Assign(FindAllFiles(LazarusDirectory, '*.pas;*.pp;*.p;*.inc', true); | ||
− | </ | + | </syntaxhighlight> |
{{Note|Jos halutaan käyttää tätä funktiota komentoriviohjelmassa niin lisäämällä projektin vaatimuksiin ''LCLBase'' niin silloin ei tarvita koko LCL-kirjastoa}} | {{Note|Jos halutaan käyttää tätä funktiota komentoriviohjelmassa niin lisäämällä projektin vaatimuksiin ''LCLBase'' niin silloin ei tarvita koko LCL-kirjastoa}} |
Latest revision as of 00:58, 16 February 2020
│
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);