Lucrul cu directoarele din Delphi

Lucrul cu directoare (foldere) în Delphi

În acest articol vă va prezenta la unele dintre caracteristicile standard pentru lucrul cu directoare. Și aici sunt câteva funcții definite de utilizator și exemple de utilizare a acestora. De asemenea, ia în considerare apelarea unui dialog de selecție director.

Pentru a începe, începe cu o funcție de simplu pentru a crea un nou dosar. Forma generală a unei astfel funcții:

Funcția CreateDir (const Dir: string): Boolean;

Aceasta este, în cazul în care dosarul este creat cu succes functia returneaza true. Imediat un exemplu simplu de utilizarea acestuia:

Procedura TForm1.Button1Click (Expeditor: TObject);
începe
dacă createdir ( 'c: \ TestDir') = true atunci
showmessage ( „Directorul a fost creat cu succes“)
altfel
showmessage ( „A apărut o eroare la crearea unui director“);
se încheie;

Când faceți clic pe un program încearcă să creeze un folder numit TestDir pe C: unitatea, iar dacă încercarea a fost de succes, este afișat mesajul. Trebuie remarcat faptul că, dacă nu specificați litera de unitate pe care doriți să creați un dosar, funcția va crea un folder în același director ca și programul în sine.

conduc la același rezultat.

Funcția RemoveDir (const Dir: string): Boolean;

Imediat Vreau să vă avertizez că această funcție poate elimina numai foldere goale, și dacă există ceva, atunci există o eroare! Dar există o soluție. Aici am ajuns la ajutorul funcției definite de utilizator cu un nume simplu MyRemoveDir. Aici este descrierea funcției:

Funcția MyRemoveDir (sDir. String). boolean;
var
iIndex. integer;
SearchRec. TSearchRec;
sFileName. string;
începe
Rezultat: = false;
sDir: = sDir + '\ * *';
iIndex: = FindFirst (sDir, faAnyFile, SearchRec);

în timp ce iIndex = 0 nu începe
sFileName: = ExtractFileDir (sDir) + '\' + SearchRec.Name;
dacă SearchRec.Attr = faDirectory începe atunci
în cazul în care (SearchRec.Name <> „“) Și
(SearchRec.Name <> '') Și
(SearchRec.Name <> '..') atunci
MyRemoveDir (sFileName);
termina altceva începe
dacă SearchRec.Attr <> faArchive apoi
FileSetAttr (sFileName, faArchive);
în cazul în care nu DeleteFile (sFileName), atunci
ShowMessage ( 'nu a putut șterge' + sFileName);
se încheie;
iIndex: = FindNext (SearchRec);
se încheie;

RemoveDir (ExtractFileDir (sDir));
Rezultat: = true
se încheie;

Copiați totul în programul tău, atunci această funcție poate fi numit ca aceasta:

în cazul în care NU MyRemoveDir ( 'C: \ TestDir'), atunci
ShowMessage ( „Eu nu pot elimina acest director“);

Acum, un pic pas înapoi de la munca imediat cu dosare și să ia în considerare problema de interes pentru mulți. Cum de a apela caseta de dialog pentru a selecta un dosar (cum ar fi atunci când instalați software-ul). JUST.

Conectarea la modulul foloseste Filectrl.pas (de exemplu, folosește FileCtrl;). Acum, a pus pe formularul are un buton (a nu se confunda :) și scrie următorul cod:

Procedura TForm1.Button3Click (Expeditor: TObject);
const
SELDIRHELP = 1000;
var
Dir: string;
începe
Dir: = 'C: \ windows';
dacă SelectDirectory (Dir, [sdAllowCreate, sdPerformCreate, sdPrompt], SELDIRHELP) atunci
Legendă: = Dir;
se încheie;

Când selectați un director în forma antetul afișa numele său!

ForceDirectories Procedura (Dir: string);

Un exemplu de utilizare a acestuia (ca întotdeauna am pus pe forma butonului nou, și apoi în scris)

Procedura TForm1.Button4Click (Expeditor: TObject);
var
Dir: string;
începe
Dir: = 'C: \ MYDIR \ test \ dir1';
ForceDirectories (Dir);
se încheie;

Și, în cele din urmă aduce funcție pentru a verifica dacă există sau nu directorul. Forma sa generală este după cum urmează:

DirectoryExists funcție (Nume: string): Boolean;

În cazul în care un director este specificat în parametrul Numele există - atunci funcția returnează true.

Sper că te-a ajutat o descriere a acestor funcții și proceduri. Vreau doar să dea sfaturi de multe ori uita la HELP, există o mulțime de informații interesante și utile!

Mult noroc în programarea dumneavoastră.

articole similare