Tutoriale Linux, Tutoriale Programare, Tutoriale retele, tutoriale photoshop

Citirea fisierelor text, in mod normal, se face in felul urmator:

Cod:

var F : Text;
    S : String;
...
  AssignFile(F, 'nume_fisier.txt');
  Reset(F);

  While Not EoF(F) Do
    Begin
      ReadLn(F, S);
      {procesari asupra liniei tocmai citite}
    End;

  CloseFile(F);
...

E o solutie functionala, ramasa inca din timpul Pascalului. Recent, totusi, am observat niste diferente destul de mari de viteza daca incarc fisierul intr-un TStringList, iar procesarile le fac direct in memorie (bineinteles, ma refer la fisiere text de marime sesizabila :P)

Codul, mai jos :

Cod:

var ST : TStringList;
    i : Integer;
...
  ST := TStringList.Create;
  ST.LoadFromFile('nume_fisier.txt');

  For i := 0 To ST.Count - 1 Do
    {procesari asupra liniei curente}

  FreeAndNil(ST);
...

Nu uitati sa goliti StringList-ul, fiindca va veti trezi cu niste leak-uri de memorie. Cel mai sigur ar fi folosirea unui bloc try ... finally, ca in exemplul de mai jos:

Cod:

ST : TStringList;
...
begin
  try
    ST := TStringList.Create;
    ...
    {procesari}
    ...
  finally
    FreeAndNil(ST);
  end;
end;

Enjoy

Ethical hacking and programming community