Entradas etiquetadas con delphi
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 >
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.
Obtener el nombre del PC
16 may
Con éste código obtendremos el nombre del PC. Se emplea la API de Windows® GetComputerName.
En C++:
/* DaW - Labs - http://daw-labs.com */ /* .:WindHack:. */ #include <windows.h> int main() { char Buffer[MAX_COMPUTERNAME_LENGTH + 1]; DWORD nSize = sizeof(Buffer); if (GetComputerName(Buffer,&nSize)) { MessageBox(0,Buffer,"Nombre de PC",MB_OK | MB_ICONINFORMATION); } return 0; }
En Delphi:
(* Autor: .:WindHack:. Sitio web: http://daw-labs.com Clase: Función Descripción: Obtiene el nombre del PC usando la API GetComputerName. *) function GetPC_Name():String; var Buffer:Array [0..MAX_COMPUTERNAME_LENGTH] of Char; BufferSize:DWORD; begin BufferSize := SizeOf(Buffer); Result := ''; if GetComputerName(Buffer,BufferSize) then Result := Buffer; end;
Comparación de palabras en arreglos (arrays) diferentes
15 may
La cuestión es sencilla, necesitamos comparar cuáles palabras están en ambos arreglos (arrays ).
Pero…¿es posible hacer esto?, claro que lo es, para ello lo haremos en dos lenguajes diferentes.
El primero será en C++ y fue originalmente programado por JaAViEr.
#include <iostream> using namespace std; int main() { char *nombrex[]={"Javier","Alex","Void","Animalf","Bolivianito","RockoX","3D1","Vart","Ranefi"}; char *nombrey[]={"Javier","Esteban","NA","Ranefi","Alex","ELEMENTO","2D1","WUALA","CUEK"}; for(int i=0;i < 9;i++) { for(int a=0;a < 9;a++) { if(nombrex[i]==nombrey[a]) { cout << "La palabra " << nombrey[a] << " Coinciden en ambas listas." << endl; } } } }
Ahora mi versión en Delphi.
program Project1; {$APPTYPE CONSOLE} uses SysUtils; var NombreX: Array [0..4] of String =('Sebastian','Camilo','Milton','Julian','WindHack'); NombreY: Array [0..4] of String =('Sebastian','Diana','Spektrum','Camilo','Milton'); I,A:Integer; begin try for I := 0 to 4 do for A := 0 to 4 do if NombreX[i]=NombreY[A] then Writeln('Las palabras '+NombreY[a]+' Coinciden...'); ReadLn; except on E: Exception do begin Writeln(E.ClassName, ': ', E.Message); ReadLn; end; end; end.
Paso a explicar un poco:
Empleamos el bucle for y la condicional if para realizar esta tarea. Buscamos las palabras y las comparamos con el otro arreglo, si este llega a ser correcto mostramos en la consola el mensaje con las palabras correctas. Si se necesita comparar con más arreglos simplemente agregamos otro bucle y modificamos la condicional.program Project1; {$APPTYPE CONSOLE} uses SysUtils; var NombreX: Array [0..4] of String =('Sebastian','Camilo','Milton','Julian','WindHack'); NombreY: Array [0..4] of String =('Sebastian','Diana','Spektrum','Camilo','Milton'); NombreZ: Array [0..4] of String =('Sebastian','Diana','Spektrum','Camilo','xD'); I,A,B:Integer; begin try for I := 0 to 4 do for A := 0 to 4 do for B := 0 to 4 do if (NombreX[i]=NombreY[A]) And (NombreY[A]=NombreZ[B]) then Writeln('Las palabras '+NombreY[a]+' Coinciden...'); ReadLn; except on E: Exception do begin Writeln(E.ClassName, ': ', E.Message); ReadLn; end; end; end.Más >
Obtener nombre de ventana activa [VB]
4 abr
Esta es otra función muy parecida a la anteriormente mostrada en Delphi -> La pueden ver aquí. Programada por mi amigo y compañero The Swash.
'----------------------------------------------------------- ' Function : [GetTitleActiveApp] ' Type : [SNIPPET] ' Autor : [The Swash] ' DateTime : [31/03/2010] '----------------------------------------------------------- Option Explicit 'User32 Lib Apis Private Declare Function GetForegroundWindow Lib "user32" () As Long Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Integer, ByVal lParam As Any) As Long 'SendMessage Constants Const WM_GETTEXT = &HD Const WM_GETTEXTLENGTH = &HE Public Function GetTitleActiveApp() As String Dim hRet As Long Dim hSpace As Long Dim sBuffer As String hRet = GetForegroundWindow If hRet <> 0 Then hSpace = SendMessage(hRet, WM_GETTEXTLENGTH, 0&, 0&) + 1 If hSpace > 0 Then sBuffer = Space$(hSpace) Call SendMessage(hRet, WM_GETTEXT, hSpace, sBuffer) End If End If GetTitleActiveApp = Trim(sBuffer) End Function
Un ejemplo de llamada puede ser:
MsgBox GetTitleActiveApp
Mostrar propiedades de un archivo
31 mar
Bueno, esta función lo que hace es usar la Shell API (ShellExecuteInfo) para mostrarnos las propiedades del archivo.
Es realmente sencilla, pero aclaro que no la he programado yo, tampoco recuerdo el nombre del autor así que disculpen.
function ShowProperties(hWndOwner: HWND; const FileName:string): boolean; var Info: TShellExecuteInfo; Handle : THandle; begin { Fill in the SHELLEXECUTEINFO structure } with Info do begin cbSize := SizeOf(Info) ; fMask := SEE_MASK_NOCLOSEPROCESS or SEE_MASK_INVOKEIDLIST or SEE_MASK_FLAG_NO_UI; wnd := hWndOwner; lpVerb := 'properties'; lpFile := pChar(FileName) ; lpParameters := nil; lpDirectory := nil; nShow := 0; hInstApp := 0; lpIDList := nil; end; Result := ShellExecuteEx(@Info) ; end;
Les dejo la descarga de un ejemplo un poco más explícito.
Para descargar hacer click aquí

