Delphi/Pascal
Delphi XE2…¡Windows (32 & 64 bit), MacOS e iOS!
18 sep
Hola a todos,
Delphi XE2 es el nuevo producto de la cadena de “Delphi” de Embarcadero.
Ahora este RAD incluye el framework FireMonkey. Esto nos permite hacer aplicaciones nativas para Windows ( 32-bit & 64-bit ), MacOS e iOS ( iPad, iPhone, iPod Touch), asimismo, se espera que próximamente se incluya Linux y Android.
Esta nueva versión realmente promete mucho, y espero que en un futuro ( XE3, quizá ) se puedan realizar aplicaciones nativas para Linux, lo cual le daría una gran cuota al desarrollo de aplicaciones en ObjectPascal.
Capturas Vídeo de demostración
Más información ( + Descarga del free trial ) http://edn.embarcadero.com/article/41593
Generar un enlace de TinyURL desde Delphi Prism
13 jul
TinyURL es un servicio gratuito que permite convertir una URL larga en un corta (acortador de URL), la cual es muy efectiva a la hora de usar servicios como Twitter.
Para usar este servicio en Delphi es necesario realizar una petición a: http://tinyurl.com/api-create.php?url={URL que se va a convertir aquí} Lo cual nos dará como respuesta la URL generada por TinyURL.
Un ejemplo realizado en Delphi Prism…
namespace ConsoleApplication; interface uses System.Net, System.IO; type ConsoleApp = class public class function GetTinyUrl(sURL: String): String; class method Main(args: array of string); end; implementation class function ConsoleApp.GetTinyUrl(sURL: String): String; const TinyAPI = 'http://tinyurl.com/api-create.php?url='; var myWebRequest: WebRequest; myWebResponse: WebResponse; myStream: StreamReader; myTinyURL: String; begin myWebRequest := WebRequest.Create(TinyAPI+sURL); myWebRequest.Method := 'GET'; myWebResponse := myWebRequest.GetResponse(); myStream := new StreamReader(myWebResponse.GetResponseStream); myTinyURL := String.Empty; myTinyURL := myStream.ReadToEnd(); myWebResponse.Close(); Result := myTinyURL; end; class method ConsoleApp.Main(args: array of string); begin Console.WriteLine('Generar TinyURL...'); Console.WriteLine(GetTinyUrl('http://daw-labs.com')); Console.ReadLine(); end; end.
El resulado es:
Generar TinyURL... http://tinyurl.com/5vde8s6
Oxygen: alternativa a AV del Windows Live Messenger
9 ene
Oxygen es una aplicación desarrollada en ObjectPascal que se encarga de sustituir al AV ( AntiVirus ) que Windows Live Messenger pide instalar cuando transferimos un archivo.
Este programa se encarga de mostrar información del archivo como:
- Nombre
- Tamaño
- Ruta
- Icono
Además en el caso de que el archivo transferido posea una extensión posiblemente peligrosa, lo notifica. También permite ejecutar el archivo directamente.
Capturas Vídeo de demostración DescargarLa descarga incluye el código fuente de la aplicación. Clic aquí para obtener los paquetes.
Crear función que retorne un arreglo
7 ene
En algunos casos debemos realizar una función que retorne un arreglo de datos. Como he visto que algunas personas tienen dudas sobre cómo realizarlo, expongo acá unos pequeños tips.
¿Cómo retornar arreglo estático?Debemos declarar el tipo:
type TArrayStatic = Array [0..5] of Integer;
Y ahora si podemos usarlo en una función. Ejemplo de su uso:
function GetArrayS: TArrayStatic; var rRes: TArrayStatic; i: Integer; begin for i := 0 to 5 do rRes[i] := i; Result := rRes; end;¿Cómo retornar arreglo dinámico?
Es muy similar a lo anterior, pero en esta ocasión debemos declarar el tipo de la siguiente manera:
type TArrayDinamic = Array of Integer;
Ejemplo:
function GetArrayD(nNum:Integer): TArrayDinamic; var rRes: TArrayDinamic; i: Integer; begin SetLength(rRes,nNum); for i := 0 to nNum -1 do rRes[i] := i; Result := rRes; end;
Como ven, bastante sencillo.
Un saludo.,
D & C Anagrams!: Resuelve anagramas
28 sep
¡Buenas tardes!
Hace muy poco presenté un script en Python en el cual hacía referencia a los Anagramas, fue algo curioso y sencillo. Maravillosamente, al pasar un par de días, recibí unos comentarios en los cuales me pedían o mejor dicho, me preguntaban si haría otra versión de esa aplicación pero con un toque más interactivo. Además si recordamos: «Python no es un lenguaje compilado sino interpretado.» Así que las personas que desearan usar ese script sencillamente necesitarían instalar el intérprete – Enfocándonos hacia Windows, claro está - lo cual me motivó más para realizar una aplicación en todo el sentido de la palabra y así fue como surgió D & C Anagrams!
D & C Anagrams! (Ventana principal)
Este sencillo, pero divertido programa tiene un total de 27 anagramas con diferente nivel de dificultad, variando entre tres a diez letras, así que se puede pasar un tiempo relativamente largo resolviendo éstos divertidos pasatiempos.
Es de código abierto por lo cual podrán mejorarla, agregarle más anagramas, en fin…Pulirla a su gusto, eso sí, recordando siempre respetar los derechos de autor. Está programado en ObjectPascal ( Delphi ), y se usaron los componentes AlphaControls Lite para su diseño (apariencia).
Descargas Más >
Fondo de pantalla estilo «presentación» Ubuntu
31 ago
Los que han usado Windows Se7en sabrán que él nos permite tener un fondo de pantalla al estilo de presentación, usando los denominados «temas», pues bien, Ubuntu y en general varias distros de GNU/Linux nos permiten hacer exactamente lo mismo de una manera sencilla, rápida y personalizada.
Para crearlos tenemos dos opciones. La primera de ellas es hacerlo manualmente siguiendo un formato, y la otra es hacerlo teniendo como mediadora a una aplicación.
ManualmenteBien, empecemos por éste. Como es algo relativamente sencillo de entender pondré de una vez el código.
<?xml version="1.0" encoding="UTF-8"?> <!-- Created by DC XML Creator --> <background> <starttime> <hour>0</hour> <minute>00</minute> <second>01</second> </starttime> <static> <duration>300</duration> <!-- Duración de la imagen --> <file>/home/windhack/Imágenes/OliviaWilde02.jpg</file> <!-- 1º Imagen de la presentación --> </static> <transition> <duration>1</duration> <!-- Duración de la transición --> <from>/home/windhack/Imágenes/OliviaWilde02.jpg</from> <!-- Cambiar imagen de... --> <to>/home/windhack/Imágenes/OliviaWilde09.jpg</to> <!-- ...A --> </transition> <!-- Para agregar más imágenes seguir el formato a partir de <static> hasta </transition> --> </background> <!-- Fin de la presentación -->Usando aplicación
Como sé que hacer todo manualmente a veces puede ser tedioso, ya que después de cinco (5) imágenes es una tarea bastante agotadora, decidí desarrollar una aplicación que simplifica todo éste proceso.
La aplicación se llama DC XML Creator y está desarrollada en ObjectPascal (Lazarus).
Su uso es relativamente sencillo: Seleccionamos las imágenes que deseamos usar para la presentación, el tiempo que durará cada una, los segundos de la transición Más >
Números perfectos
28 ago
Mirando un poco las curiosidades con los números, me encontré con éstos, los números perfectos.
¿Qué son? Un número perfecto es un número natural cuya suma de los divisores propios positivos (+) es igual a sí mismo.
Por ejemplo, 28 es un número perfecto ya que la suma de los divisores: 1 + 2 + 4 + 7 + 14 es igual a 28.
Ahora, he decidido crear una función en Pascal que retorna Verdadero (True) o Falso (False) si un número introducido es perfecto.
function PerfectNumber(iNum:Integer):Boolean; var Suma,I:Integer; begin Suma := 0; Result := False; for I := 1 to Pred(iNum) do if (iNum Mod I = 0) then Suma := Suma + I; if iNum = Suma then Result := True; end;
Valor absoluto de un número real en Pascal
14 jul
El Valor absoluto de un número real es la distancia entre el número real y el cero (0) en la recta numérica, sin tener en cuenta su signo sea éste positivo o negativo.
Por ejemplo, 15 es el valor absoluto de -15 y de 15.
Para todo número real , el valor absoluto es positivo. Se nota por y se define como:
Programando cálculo en PascalPara obtener el valor absoluto de un número, tenemos la función Abs(); de la unidad System.pas. Pero bien, como siempre, programaremos nuestra propia función (alternativa).
Tomando en cuenta el siguiente pseudocódigo podremos crear más fácil la función:
Función ValorAbsoluto(Numero)
Inicio
Si Numero < Cero Entonces
Retorno Numero * -1
De otro modo Si Numero > Cero Entonces
Retorno Numero
Sino
Retorno Cero
Fin
Pues no siendo más, aquí dejo mi función.
function AbsoluteValue(X:Real):Real; const ZeroValue = 0.0; begin if X < ZeroValue then Result := -X (* Es igual a X * (-1) *) else if X > ZeroValue then Result := X else Result := ZeroValue; end;
Navegador Web en Delphi Prism
4 jun
Delphi Prism es la versión de Delphi para plataformas .NET. Como aprendizaje he creado un navegador web en esta plataforma, obviamente usando el componente WebBrowser y por ende el motor de renderizado Trident.
El navegador se llama DaGiMe Explorer. Permite abrir archivos mediante el protocolo file:///, guardar una página web, y las características de navegación comunes.
Sencillo, pero ideal para entender un poco este nuevo lenguaje.
Cifrado César en Pascal
29 may
Versión en Pascal del algoritmo de cifrado César, programada por mí.
program CesarCifrado; {$APPTYPE CONSOLE} uses SysUtils; var Alphabet: Array [0..25] of Char=('a','b','c','d','e','f','g','h','i','j','k', 'l','m','n','o','p','q','r','s','t','u','v', 'w','x','y','z'); NWord:String = ''; Palabra: String; Clave:Integer; function CifrarCesar(AString:String;AKey:Integer):String; var I,J,ALength,Temp,Tmp:Integer; begin Result := ''; AString := LowerCase(AString); ALength := Length(Alphabet); if (AKey >= 1) and (AKey <= 26) then begin for I := 0 to Length(AString) do for J := 0 to ALength -1 do if (AString[I] = Alphabet[J]) then if J+AKey <= 26 then begin Temp := J+AKey; Tmp := Temp-26; NWord := NWord + Alphabet[Tmp] end else NWord := NWord + Alphabet[J+AKey]; end; Result := NWord; end; begin try WriteLn('Escriba la palabra que desea cifrar > '); ReadLn(Palabra); WriteLn('Escriba la clave para codificar (entre 1 y 24) > '); ReadLn(Clave); Write('La palabra cifrada es: ',CifrarCesar(Palabra,Clave)); ReadLn; except on E: Exception do Writeln(E.ClassName, ': ', E.Message); end; end.

