ago 142012
 

Buenas,

Hace ya algún tiempo que quería poner esta entrada, pero como ando liado con el tema de la GMLib, lo había estado dejando de lado hasta hoy.

Aun recuerdo cuando, programando en versiones antiguas de Delphi (Delphi 3, 6 y 7), para saber ciertas carpetas de sistema tenías que recurrir al API de Windows, o al manipular carpetas, esas típicas funciones recursivas recorriendolas para listar o saber archivos,….

A partir de Delphi 2010, en el que Embarcadero incluyó la nueva unit IOUtils, estos «dolores de cabeza» terminaron y todas estas funciones que teníamos almacenados en units de «funciones generales» pasan a una mejor vida.

Esta unit tiene tres clases, la TDirectory, la TPath y la TFile, todas ellas repletas de procedimientos y funciones de clase, por lo que no necesitaremos instanciar ningún objeto, facilitándonos, aun más, la programación.

Por ejemplo, si queremos saber la carpeta temporal de Windows, simplemente haremos lo siguiente

uses System.IOUtils;

procedure TForm1.Button1Click(Sender: TObject);
begin
  ShowMessage(TPath.GetTempPath);
end;

O si queremos saber los archivos contenidos en una carpeta

uses System.IOUtils, System.Types;

procedure TForm1.Button1Click(Sender: TObject);
var
  i: Integer;
  Files: TStringDynArray;
begin
  Files := TDirectory.GetFiles('C:\Archivos de programa\Embarcadero\RAD Studio\7.0', '*.*', TSearchOption.soAllDirectories);

  Memo1.Lines.Clear;
  for i := Low(Files) to High(Files) do
    Memo1.Lines.Add(Files[i]);
end;

O si queremos saber la fecha/hora de creación de un fichero

uses System.IOUtils;

procedure TForm1.Button1Click(Sender: TObject);
begin
  ShowMessage(DateTimeToStr(TFile.GetCreationTime('c:\prueba.txt')));
end;

Y así podríamos seguir con cantidad de procedimientos/funciones que nos harán la vida (al menos la de programador) más simple.

Os animo a que reviséis el código fuente de esta unit por dos principales motivos. El primero y fundamental es el de conocer qué hace internamente, qué APIs se lleman,…. Y el segundo para que veáis algunas técnicas de programación que quizás algunos desconozcan (yo el primero hasta que lo vi aquí) como la «referencia a funciones» (ver, por ejemplo, la función «class function TDirectory.DoGetFiles«).

Pues nada, espero que os sea de utilidad.

Nos leemos

 

  4 Responses to “La unit IOUtils”

  1. Afortunados los que tienen un Delphi 2010.

    Yo tendré que seguir con mi TurboDelphi y mi unit «ufunc.pas», jejeje

    Saludos

  2. Buen dia me gusta mucho tu blog
    tengo una pequeña duda no se si sea correcto preguntar aqui
    como puedo crear una clase Tform con una variable string
    es decir tengo x cantidad de formularios guardo los nombres en una pequeña base de datos
    cuando traigo la informacion guardo el nombre en una variable de tipo string llamada NombreForm pero para mandar hablar la forma pongo NombreForm.Show y me dice que incompatyble types no se si como convertir el string a Tform no se si me puedas ayudar gracias de antemano

 Leave a Reply

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

(required)

(required)

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.