Determinarea dimensiunii fișierului Delphinus

Me nu a avut niciodată sarcina de a determina dimensiunea fișierului Delphi. Dar, după ce am văzut undeva întrebarea: „cum de a determina dimensiunea fișierului,“ Eu, de asemenea, a fost curios.

Determinarea dimensiunii fișierului este aceeași ca și definiția creșterii boa în celebrul desen animat! Cât de mulți octeți se va potrivi, astfel încât este dimensiunea sa. Planul este după cum urmează:
  1. Solicitarea de tip 1 octet de date. Acesta va fi un record.
  2. Se determină variabila de fișier de acest tip.
  3. Începem cu începutul fișierului și du-te la sfârșitul anului. Cât de multe conversii - atât de mulți octeți în fișierul!
Programul va consta din forme. care ia o componentă de selecție fișier - OpenDialog și butonul de buton. făcând clic pe acesta și alegeți fișierul. Aici, de fapt, un manipulator al butonului:

Procedura TForm1.ButtonClick (Expeditor: TObject);
tip tsize = Înregistrare
Momeala: byte;
se încheie;
var F: File de tsize;
Dimensiune: Integer;
începe
Dimensiune: = 0;
cu OpenDialog1 do
în cazul în care Execute apoi
începe
AssignFile (F, FileName);
Reset (F);
în timp ce (nu EOF (F)) do
începe
Dimensiune: = Size + 1;
cauta (F, Size);
se încheie;
Form1.Caption: = IntToStr (dimensiune); // afișează informații despre valoarea în formă antet
CloseFile (F);
se încheie;
se încheie;

Programul a fost scris în cinci minute, spun ei, „pe genunchi“. Acesta funcționează până la mai multe megaocteți în timp ce de așteptare pentru rezultatul de fișiere de mici dimensiuni, de câteva secunde. Pentru fișiere mari de așteptare întârziată, și „agățate“ de program arată. Puteți schimba programul, astfel încât acesta este kiloocteți considerat (înlocuiți caută (F, Size) să caute (F, Size * 1024)). Aceasta va crește viteza de 1024 de ori, și nu vor fi acceptabile.

A fost mai mult o demonstrație a metodelor de lucru cu fișiere. Și, de fapt, este mult mai ușor! Dimensiune fișier FILESIZE returnează funcția încorporată. Un fișier este suficient pentru a descrie ca tip octet:

Procedura TForm1.ButtonClick (Expeditor: TObject);
var F: File de octet;
Dimensiune: Integer;
începe
cu OpenDialog1 do
în cazul în care Execute apoi
începe
AssignFile (F, FileName);
Reset (F);
Dimensiune: = Filesize (F);
Form1.Caption: = IntToStr (dimensiune); // afișează informații despre valoarea în formă antet
CloseFile (F);
se încheie;
se încheie;

Există o modalitate alternativă de a lucra cu fișiere Delphi. în care fișierul este tratat ca un obiect. Există, de asemenea, un built-in metode pentru determinarea dimensiunii fișierului. De asemenea, aduce întregul proces:

Procedura TForm1.ButtonClick (Expeditor: TObject);
var F: TFileStream;
începe
cu OpenDialog1 do
în cazul în care Execute apoi
începe
F: = TFileStream.Create (Filename, fmOpenRead);
Legendă: = IntToStr (F.Size);
F.Free;
se încheie;
se încheie;

Această procedură este mai compact, mai rapid, dar necesită o pregătire suplimentară.