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
Afortunados los que tienen un Delphi 2010.
Yo tendré que seguir con mi TurboDelphi y mi unit «ufunc.pas», jejeje
Saludos
Algún día mi buen amigo, algún día 😉
Saludos
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
Hola sonic
Gracias por pasarte por aquí 🙂
Para preguntas te invito a que vayas a DelphiAccess, allí te contestaré (u otro de sus miembros) encantado 🙂
Nos leemos