ago 222012
 

Buenas,

Salgo de mi letargo solamente para daros esta noticia. Imagino que ya la habréis visto en algunos foros/blogs, pero quizás lo que no habéis visto es el vídeo introductorio de las novedades, así que aquí os lo dejo (lo puso el compañero fredycc en DelphiAccess).

También os dejo un enlace a todas las fechas del RAD Studio XE3 World Tour, así como al formulario para incribirse a las que se realizan en España (yo espero ir, así que, a ver si nos vemos).

Nos leemos (o vemos) pronto 😉

ago 182012
 

Pues nada, que me voy de vacaciones. No me voy de viaje, pero tendré el xiringuito cerrado hasta setiembre (aunque quizás pase a sacar el polvo de vez en cuando). Hay que aprovechar las vacaciones para estar con la familia, que no me ven mucho el pelo durante las semanas de trabajo.

Eso sí, si os pasáis por Tarragona, estáis invitados a una cervecita bien fresquita en alguna terracita jejejeje

Nos vemos a la vuelta!!

 

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

 

ago 082012
 

Stack Exchange Q&A site proposal: Stack Overflow in Spanish

Buenas,

Leo en el blog del compañero Neftalí, que otro compañero, jachguate (o Juan Antonio para los colegas jejeje) ha abierto una propuesta en Area51 para crear un StackOverflow en Español.

La verdad es que me parece de lo más interesante para la comunidad hispana y en especial para todos aquellos que el nivel de inglés nos impide hacer uso extensivo de comunidades como stackoverflow.com.

Como dice el compañero Juan Antonio, si no sabes de qué te estoy hablando, te invito a leer esta entrada en su blog, donde lo explica todo, todo y todo 😉

Pasa la voz!!

Nos leemos

ago 072012
 

Buenas,

Antes de bajar la persiana por vacaciones, quiero presentaros una nueva versión de los componentes GMLib para Delphi. Hay bastantes novedades (sobretodo en el mapa al que se le han añadido varias capas -layers-) y un nuevo componente, el TGMDirections. Aquí la lista de las novedades:

  • Nuevo componente, el TGMDirection, para el cálculo de rutas. Dado que es un componente complejo (por el volumen de clases que intervienen -20 clases nuevas-), agradecería comentarios de funcionalidad.
  • Cambio: se translada a la clase base la función GetConvertedString.
  • Nuevo: TGMObjects -> nueva clase que hereda de TGMBase y de la que heredarán clases como TGMLinkedComponent o TGMDirection
  • Nuevo: TGMMaps -> añadida propiedad Layers para el acceso a las capas (layers) de Google Maps como:
    • Panoramio (clase TPanoramio)
    • Traffic (clase TTraffic)
    • Transit (clase TTransit)
    • Bicyclig (clase TBicycling)
    • Weather (clase TWeather)
  • Nuevo: TGMMaps -> añadidos eventos OnWeatherClick y FOnPanoramioClick.
  • Cambio: TGMMaps -> se cambian los métodos xxToStr y StrToxxx para reducir código.
  • Cambio: TGMMaps -> los métodos Printxxxx y SaveToJPGFile usan los métodos de la unidad WebControls.
  • Error: TGMPolyline -> corregido error cuando se intentaba mostrar una polilineasin TLinePoints.
  • Nuevo: Lang -> añadido el idioma francés (gracias Stéphane).
  • Nuevo: TWebControl -> Se añade método SaveToJPGFile.
  • Nuevo: TSizeable -> añadido método Assign.
  • Error: TSizeable -> cuando no era circular, el radio crecía más que el máximo.
  • Nuevo: TAddressComponent -> añadido método Assign.
  • Nuevo: TAddressComponentsList -> añadido método Assign.
  • Nuevo: TGeometry -> añadido método Assign.
  • Nuevo: TGeoResult -> añadido método Assign.
  • Nuevo: TGoogleBusiness -> añadido método Assign.
  • Nuevo: TGMGeoCode -> se sobreescribe el método Notification para controlar la propiedad Marker.
  • Cambio: TGMGeoCode -> se trasladan los métodos xxToStr y StrToxxx a la clase TTransform de la unidad GMFunctions.
  • Nuevo: TGMGeoCode -> añadido método Assign.
  • Nuevo: TTransform -> nueva clase con transformaciones xxxToStr y StrToxxx para transformar las propiedades tipo Set a string y de string a la propiedad tipo Set.
  • Nuevo: General -> el proyecto se ha dividido en 2 packages para poder compilar en 64 bits en XE2.
  • Nuevo: General -> Compilado para Delphi 2009 y C++ XE2

Como siempre, podéis ver más explicaciones y descargar los componentes en su página.

Qué los disfrutéis!

Nos leemos