Archivo

Archivo para la categoría ‘Delphi’

NASA, la foto del día…

viernes, 3 de junio de 2016 9 comentarios
Share Button

Hace bastante tiempo (cuando estábamos en la facultad) con mis amigos,  nos acostumbramos a visitar la web de  “la foto del día”. Había y sigue habiendo webs de muchas temáticas, pero una de las más conocidas en aquella época era la de la NASA. Las fotos de este tipo que hoy son más habituales, entonces era difícil encontrarlas (con aquella calidad).

ImagenDelDia

Actualmente la URL para acceder a “la foto del día” es esta.

http://apod.nasa.gov/apod/astropix.html

Leer más…

Yo ya tengo el mío…

miércoles, 2 de marzo de 2016 3 comentarios
Share Button

Pues eso, tal y como reza el título, yo ya tengo el mío.  :-DTapa_libro

No hace muchos días, de la mano de Danysoft (partner oficial de Embarcadero en España), se publicó el último libro de Francisco Charte; «Programación de aplicaciones Delphi con acceso a Bases de Datos».  Pues ayer ya llegó mi copia.

No puedo opiniar todavía en profundidad, pues apenas lo he ojeado por encima, pero la verdad es que tiene una pinta fantástica.

Está centrado en la librería de acceso a datos que viene actualmente con las versiones de delphi, FireDAC y que nos da acceso multiplataforma a  las Bases de Datos más utilizadas en el mercado. Más que las explicaciones que yo pueda dar, os recomiendo que reviséis el índice completo del libro que se puede descargar en PDF desde aquí.

Personalmente me han llamado la atención algunos puntos, pero que supongo que a vosotros os pueden interesar muchos otros de los que se tratan:

  • Aplicaciones con Interbase embebido
  • Bases de Datos en memoria con FireDAC
  • Bases de Datos y Unicode
  • Servicios REST
  • Todo lo refrente a multiplataforma
  • Configuración de FireDAC

Personalmente no he trabajado casi nada con FireDAC (en lo que se refiere a proyectos «en serio») así que aunque imagino que en su mayor parte se utilizan de forma similar a otras librerías de acceso a datos, siempre está bien tener un punto de referencia para llegar un poco más allá y profundizar un poco.

Si alguien tiene opiniones y comentarios sobre el libro y desea expresarlos, pues sois libres de participar y dar vuestra opinión aquí.

Un saludo y hasta la próxima.

IMG_20160226_174910

IMG_20160226_175022

Categories: Bases de Datos, Danysoft, Delphi Tags: ,

Hablando del tiempo… (OpenWeatherMap) 2/2

lunes, 21 de diciembre de 2015 2 comentarios
Share Button

Para complementar la entrada anterior (Hablando del tiempo… (OpenWeatherMap) 1/2)  y «acabarla» me queda publicar el desarrollo móvil correspondiente a la aplicación que vimos anteriormente.
Como ya os comenté en la entrada anterior, el código a utilizar es prácticamente el mismo que hemos utilizado en las aplicaciones para windows (VCL). La mayor diferencia que me he encontrado en el tratamiento de la respuesta JSON que obtenemos del servidor.

Para versiones antiguas de Delphi, podéis utilizar si lo necesitáis la misma librería que ya he recomendado aquí otras veces. Se trata de lkJSON que podéis encontrar en Sourceforge.
En las nuevas versiones de Delphi ya está disponible la unit System.JSON, con lo necesario para no utilizar librerías externas.

function TForm1.ParseTiempoCiudadesHist(AObjResp: TlkJSONobject; var ATiempoProxHoras: TTiempoProxHoras): Boolean;
var
  i, j, num, index:integer;
  oHorasList, OWList:TlkJSONlist;
  oHora, oCoord, oMain, oWind, oWeather:TlkJSONobject;
  Str:String;
begin
  // ini
  Result := False;
  // Si no está asignado salimos..
  if not Assigned(AobjResp) then begin
    Exit;
  end;
    // Si hay error no parseamos
    if IsErrorResponse(AObjResp, errCode, ErrMsg) then begin
    Exit;
  end;
 
  // proteccion para el parseo
  try
    // cod. devuelto (datos principales
    ATiempoProxHoras.Cod := errCode;
 
    num := AObjResp.IndexOfName('count');
    if (num <> -1) then begin
      num := GetAsInteger(AObjResp.Field['count'].Value);
    end;
 
    // si no hay ciudades
    if (num = 0) then begin
      MessageDlg('No hay ninguna ciudad que coincida con ese código [nombre,pais].', mtWarning, [mbOK], 0);
      Exit;
    end;
 
    // Lista de horas (Lista)
    TlkJSONBase(oHorasList) := AObjResp.Field['list'];
    // array de elementos
    SetLength(ATiempoProxHoras.TiempoHora, oHorasList.Count);
    // Quedarse con el primier elemento de la lista...
    for i := 0 to (oHorasList.Count - 1) do begin
      // datos de la primera ciudad
      TlkJSONBase(oHora) := oHorasList.Child[i];
      // datos básicos
      ATiempoProxHoras.TiempoHora[i].dt_text := GetAsString(oHora.Field['dt_txt'].Value);
      // convertir fecha-Hora
      Str := ATiempoProxHoras.TiempoHora[i].dt_text;
      ATiempoProxHoras.TiempoHora[i].dt := EncodeDateTime(
        StrToIntdef(Copy(Str, 1, 4), 0),
        StrToIntdef(Copy(Str, 6, 2), 0),
        StrToIntdef(Copy(Str, 9, 2), 0),
        StrToIntdef(Copy(Str, 12, 2), 0),
        StrToIntdef(Copy(Str, 15, 2), 0),
        StrToIntdef(Copy(Str, 18, 2), 0), 0);
 
      // Load Main
      TlkJSONBase(oMain) := oHora.Field['main'];
      ATiempoProxHoras.TiempoHora[i].Main.temp := GetAsFloat(oMain.Field['temp'].Value);
      ATiempoProxHoras.TiempoHora[i].Main.tempmin := GetAsFloat(oMain.Field['temp_min'].Value);
      ATiempoProxHoras.TiempoHora[i].Main.tempmax := GetAsFloat(oMain.Field['temp_max'].Value);
      ATiempoProxHoras.TiempoHora[i].Main.pressure := GetAsFloat(oMain.Field['pressure'].Value);
      ATiempoProxHoras.TiempoHora[i].Main.humidity := GetAsInteger(oMain.Field['humidity'].Value);
 
      // Load weather
      TlkJSONBase(OWList) := oHora.Field['weather'];
      TlkJSONBase(oWeather) := oWList.Child[0];
      ATiempoProxHoras.TiempoHora[i].Weather.id := GetAsInteger(oWeather.Field['id'].Value);
      ATiempoProxHoras.TiempoHora[i].Weather.main := GetAsString(oWeather.Field['main'].Value);
      ATiempoProxHoras.TiempoHora[i].Weather.desc := GetAsString(oWeather.Field['description'].Value);
      ATiempoProxHoras.TiempoHora[i].Weather.icon := GetAsString(oWeather.Field['icon'].Value);
    end;
 
    Result := True;
  except
    // si hay error, FALSe
    Result := False;
  end;
end;

Leer más…

Categories: Android, Código, Delphi, iOS, JSON Tags: , , ,

Hablando del tiempo… (OpenWeatherMap) 1/2

viernes, 4 de diciembre de 2015 13 comentarios
Share Button

clima_gdeHace unos días pensaba en un tema para una nueva entrada del blog.
No tenía ideas, así que como solemos hacer aquí cuando no tenemos de qué hablar, se me ocurrió “hablar del tiempo”… (gracias a Javi desde aquí, que me fue realmente el que me puso en la pista del tema ;-) ).

Pues ya está, decidido, hablemos del tiempo.

Tenía en mente escribir sobre algunas de las novedades de las últimas versiones de RAD Studio y utilizaremos el tema para realizar algunas pruebas y demostrar cómo funcionan. Para ellos y para hablar del tiempo, vamos a utilizar en la entrada OpenWeatherMap.

¿Qué es OpenWeatherMap?

Según la web se describe como, “un servicio que provee de datos del tiempo de más de 200.000 ciudades y de todas las ubicaciones geográficas que se encuentra disponible en la web OpenWeatherMap.org y también a través de API. La idea del servicio está inspirada en OpenStreetMap y Wikipedia que ofrecen la información gratuita y disponible para todo el mundo.”

 APY Key

OpenWeatherMap es un servicuio gratuito y para poder trabajar con él, deberemos crear una cuenta y así acceder a una API Key, que es obligatoria a la hora de realizar peticiones a la web.

Para esta entrada y los ejemplos de código he dado de alta una cuenta gratuíta y he obtenido la siguiente API Key:

278857e8dee51f914026df21d0d40c19

_________________________________________________________________
NOTA (21/01/2021):
Algún usuario del blog ha utilizado esta clave, en lugar de para hacer pruebas, para otros temas, de manera que desde la página de OpenWeatherMap me han informado de un tráfico excesivamente alto y de que se bloqueará esta APIKey cuando lo exceda. Siento que para los que accedéis al blog esta deje de funcionar (a ratos). Si queréis hacer pruebas debréis crear vuestra propia clave.
Desgraciadamente a veces intento facilitar las cosas a los que accedéis a estas entradas, pero hay quien prefiere no seguir las reglas y usar el camino fácil.
_________________________________________________________________

AVISO: Para seguir esta entrada y probar los ejemplos, podéis usar esta clave, pero si váis a programar aplicaciones o vuestros propios ejemplos, os aconsejo que déis de alta vuestra propia cuenta y obtengáis vuestra clave, pues en cualquier momento ésta puede dejar de estar activa.

La explicación completa de cómo utilizar el valor de la «API KEY» lo tenéis en este link.

Leer más…

Categories: Aplicación, Delphi, OOP, REST Tags:

Presentación de Rad Studio 10 Seatle en Barcelona

miércoles, 25 de noviembre de 2015 3 comentarios
Share Button

Como viene siendo habitual cuando desde Embarcadero se presenta una nueva versión de Rad Studio, Danysoft realiza el «Iberian Tour» por diferentes ciudades de España para presentar las novedades del producto. Es este caso hoy día 25 se ha realizado la de Barcelona.

Podemos revisar las demos y leer algo de documentación, pero siempre es interesante asistir a una presentación en vivo. Las preguntas, las respuestas, las propias demos, el feedback y las sensaciones son diferentes a las que uno experimenta cuando está allí. Además de que como siempre he dicho, es una oportunidad para ver a diferentes amigos y excompañeros de trabajo que asisten a estas conferencias.

La presentación de hoy ha estado a cargo de Luis Navarro, Product Manager de Embarcadero.

Os adjunto algunas fotos de la presentación de hoy.

IMG_20151125_115852

IMG_20151125_115925

IMG_20151125_115908

IMG_20151125_135526b

También en este link del ClubDelphi podéis ver algunas de la presentación en Valencia (que han colgado la gente de Danysoft) y os invito a que publiquéis las de las otras ciudades si es que tenéis la oportunidad de poder asistir, así como dejar vuestras impresiones si os aperetece.

En cuanto al propio RAD Studio y en concreto a Delphi, pues qué decir. La verdad es que esta versión 10 (Seatle) tiene muy buena pinta y aunque no la he probado a fondo, sigue la misma línea ascendente de las anteriores (a mi entender). Muchas mejoras enfocadas a la estabilidad y al IDE. Y una fuerte apuesta por continuar evolucionando el desarrollo en platarformas móviles (como no podía ser de otra manera) y en seguir evolucionando la VCL para engarcharse al carro de Windows 10 (y por lo que hemos visto parece que lo ha conseguido).

Os dejo el video con las novedades de esta versión por si queréis echarle un vistazo y el link a la lista de novedades (disponible en la docwiki) de esta versión.

Un saludo y hasta la próxima.

Replay de las sesiones de la DelphiWeek 2015

martes, 7 de abril de 2015 Sin comentarios
Share Button

Si te perdiste las sesiones de la DelphiWeek 2015, ya están disponibles todas las sesiones en esta lista de reproducción de Embarcadero Technologies.

Vale la pena revisarlas, porque algunas son muy interesantes. Hay un poco de todo, de carácter general, técnicas, algunas más “offtopic” y otras referentes a partners y componentes comerciales.

Delphi banner

 

Aquí tenéis una lista completa de las sesiones:

Espero que las encontréis interesantes.

 

Un saludo y hasta la próxima.

20 cumpleaños de Delphi!! #DelphiWeek 2015

viernes, 30 de enero de 2015 1 comentario
Share Button

El próximo mes de Febrero se celebra el 20 aniversario de Delphi, concretamente el 14 de Febrero (no haré comentarios cursis sobre temas “románticos”, dado el día  ;-D  ).

Se celebra además a lo grande!

Desde el 9 al 13 de Febrero se celebrará la “#DelphiWeek”. Sesiones online donde se realizarán diferentes eventos; Según la agenda podremos disfrutar de:

  • Entrevistas
  • “Code Battles”. Batallas de código
  • Delphi Games
  • Funside of Delphi
  • Virtual Office Tours
  • Day in the Life survey
  • Global celebration of all things Delphi

Supongo que durante los próximos días iremos conociendo más detalles de los diferentes eventos.

Delphi banner

El anuncio lo ha hecho Jim McKeeth en la “community” de Embarcadero, y ya está disponible el registro para las sesiones (mañana y tarde).

Blaise Pascal Magazine en Castellano

viernes, 2 de enero de 2015 Sin comentarios
Share Button

Antes de nada, Feliz Año Nuevo a los que visitáis este Blog. Espero que este año 2015 sea mucho mejor que el anterior.

Quiero empezar este año nuevo con una buena noticia (o al menos a mi me lo parece) y es la que reza en el título de la entrada.

MagazinaNo se si muchos de vosotros conocéis Blaize Pascal Magazine. Se trata de una revista que se publica bajo suscripción ya hace unos años y que trata todos los temas y entornos relacionados con Object Pascal.  Delphi, Lazarus, Oxygene, FreePascal,…

Desde hace un tiempo se está haciendo un esfuerzo (y me consta por la persona que lo lleva) por parte de la revista para poder publicarla de forma asidua es castellano. Prueba de ellos son los primeros números (1, 2 y 3) que corresponden a las publicaciones en inglés (30, 31 y 32) que ya han visto la luz en nuestro idioma. En este sentido os recomiendo leer la Editorial de los números 2 y 3 donde están las líneas maestra de lo que pretenden los editores de la revista.

Todas ellas se han publicado completas en castellano de forma gratuita.

Para descargarlas podéis ir a la sección en castellano de la página.

Creo que es una buena noticia para la comunidad hispana de Delphi. No son muchas las publicaciones y libros de los que disponemos en nuestro idioma y el hecho de que se amplíe ese abanico siempre es bueno.

Veremos si la gente se anima y el proyecto sigue adelante.

Un saludo y hasta la próxima.

Grupo Delphi Solidario facebook (888)

martes, 18 de noviembre de 2014 2 comentarios
Share Button

descarga (1)Desde aquí mi enhorabuena al grupo de facebook, Delphi Solidario.

Originalmente empezó como un proyecto personal de Salvador Jover (Delphi Basico), pero ha transcendido de una iniciativa puntual a ser un referente para muchos usuarios. En concreto para 888 que actualmente son los miembros con los que cuenta.

Creo que esa cifra merece este referencia.  ;-)

descarga

Un saludo.

NOTA: Acabo de dejar la entrada anticuada, pues al finalizarla acabo de dar de alta al usuario 889.

Categories: Delphi, Offtopic Tags: , , ,

Mando a distancia; Tethering con Delphi XE7

viernes, 17 de octubre de 2014 32 comentarios
Share Button

El tema de Tethering, del que ya he hablado antes en el blog (Tethering, operaciones básicas), se incorporó a la versión XE6 de RAD Studio. Hasta ese momento podíamos utilizar esta característica para conectar aplicaciones y dispositivos utilizando Wifi.

blueT_WifiPara esta nueva versión XE7 se a añadido la posibilidad de conexión mediante Bluetooth.
Además, a las características ya existentes de conexión wifi, se han añadido opciones para poder filtrar o discriminar los dispositivos a los que nos vamos a conectar a partir de máscaras para la IP o para la subred.

Como ya he comentado anteriormente, el Tethering es una característica que podemos utilizar (aunque se haya introducido en las últimas versiones de Delphi) no sólo en aplicaciones FireMonkey (tanto móviles como de escritorio) sino también, en aplicaciones ”antiguas” diseñadas con la VCL.

INTRODUCCIÓN

La idea de esta entrada es repasar más ampliamente en las características de Tethering, de las que ya hablé anteriormente, y profundizar en las posibilidades de esta tecnología, utilizando un proyecto más complejo y completo que el que vimos en la introducción.

Para ello utilizaremos 2 aplicaciones diferentes. Una basada en la VCL y otra desarrollada con Firemonkey para dispositivos móviles.

Reproductor y Mando

Leer más…

Categories: Delphi, Tethering, XE7 Tags: , ,