Sign in Join
Wiki copytemporary

FindAllFiles/fi: what changed

Revision 0 to 1. Removed lines have a minus sign; added lines have a plus sign.

Title: FindAllFiles/fi

OldNewLine
1+# Hae kaikki tiedostot
2+
3+Lazaruksen [[Unit/fi|käännösyksikkö (unit)]] [[LazFileUtils]] (Joka sisältää [[UTF-8]] korvaukset FPC [[RTL]] koodille ja lisäksi siellä on tiedoston/hakemiston(kansion) käsittelyä)
4+
5+Katso myös:
6+
7+- <http://lazarus-ccr.sourceforge.net/docs/lcl/fileutil/findallfiles.html>
8+- <http://lazarus-ccr.sourceforge.net/docs/lcl/fileutil/tfilesearcher.html>
9+
10+``` pascal
11+procedure FindAllFiles(AList: TStrings; const SearchPath: String;
12+ SearchMask: String = ''; SearchSubDirs: Boolean = True; DirAttr: Word = faDirectory);
13+
14+function FindAllFiles(const SearchPath: String; SearchMask: String = '';
15+ SearchSubDirs: Boolean = True): TStringList;
16+```
17+
18+[[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ä.
19+
20+Maskina voi olla yksi ainoa maski, jota voidaan käyttää FindFirst / FindNext -funktioissa tai se voi sisältää luettelon maskeista, jotka on erotettu puolipisteellä (;).\
21+Maskissa olevat välilyönnit käsitellään kirjaimina.
22+
23+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.
24+
25+**Esimerkki:**
26+
27+``` pascal
28+uses
29+ ..., LazFileUtils, ...
30+var
31+ PascalFiles: TStringList;
32+begin
33+ PascalFiles := TStringList.Create;
34+ try
35+ FindAllFiles(PascalFiles, LazarusDirectory, '*.pas;*.pp;*.p;*.inc', true); //Etsii esim. kaikki pascal lähdekooditiedostot
36+ ShowMessage(Format('Löydettiin %d kpl Pascal lähdekooditiedostoja', [PascalFiles.Count]));
37+ finally
38+ PascalFiles.Free;
39+ end;
40+
41+// Tai
42+
43+begin
44+ //No need to create the stringlist; the function does that for you
45+ PascalFiles := FindAllFiles(LazarusDirectory, '*.pas;*.pp;*.p;*.inc', true); //Etsii esim. kaikki pascal lähdekooditiedostot
46+ try
47+ ShowMessage(Format('Löydettiin %d kpl Pascal lähdekooditiedostoja', [PascalFiles.Count]));
48+ finally
49+ PascalFiles.Free;
50+ end;
51+```
52+
53+**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:
54+
55+``` pascal
56+ // Älä koskaan tee tätä !!!! - Sillä tässä tapauksessa ei ole tapaa vapauttaa TStringList-tyyppistä
57+ // merkkijono-oliota jonka FindAllFiles luo.
58+ Listbox1.Items.Assign(FindAllFiles(LazarusDirectory, '*.pas;*.pp;*.p;*.inc', true);
59+```
60+
61+> **Note:** Jos halutaan käyttää tätä funktiota komentoriviohjelmassa niin lisäämällä projektin vaatimuksiin *LCLBase* niin silloin ei tarvita koko LCL-kirjastoa
62+
63+---
64+*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](/wiki-contact).*

Back to history