Componente definitivo para tratamiento de imágenes en Delphi

ImageEn es uno de los mejores componentes freeware para tratamiento de imágenes en Delphi que existe actualmente. Además incorpora funciones de video captura, impresión y procesamiento de imágenes, renderizado, miniaturas, manejo de base de datos con campos blob, tratamiento de imágenes vectoriales.
Merece la pena que echen un vistazo a todas las característcas del software desde aquí:
http://www.hicomponents.com/main/products/products-imageenvcl/imageenvcl-features

Página web:
http://www.hicomponents.com

Links relacionados:
Componente para generar efectos graficos
Trucos sobre imagenes
Chipmunk 2D physics engine

Simular teclado de un piano con Delphi


Este soft simula el teclado de un piano, generando con el altavoz las diferentes frecuencias de la escala musical, además puede producir señales sinusoidales, triangulares, cuadradas o en diente de sierra.

Autor: jcniloc
Descargar código


Relacionados:

Leer las cabeceras de un archivo mp3 
Conversor MPEG4 a AVI 
Reproducir notas musicales 

Eliminar el ejecutable desde el propio ejecutable

El siguiente código elimina el ejecutable desde el propio programa, para ello se construye un fichero .bat que se inicia con la función WinExec.
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TForm1 = class(TForm)
  Button1: TButton;
  procedure Button1Click(Sender: TObject);
private
  { Private declarations }
public
  { Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
f : TextFile;
ficheroBat : string;
begin
ficheroBat := ChangeFileExt(Application.ExeName, '.bat');
AssignFile(f, ficheroBat);
FileMode := fmOpenWrite;
rewrite(f);
try
  Writeln(f, format('Erase "%s"',[Application.exename]));
  Writeln(f, format('Erase "%s"',[ficheroBat]));
finally
  CloseFile(f);
end;
WinExec (Pchar(ficheroBat), 1);
Application.terminate;
end;


end.
o aquí tienen otra función que copia el propio ejecutable al directorio raíz c:\ y lo ejecuta desde allí
PROGRAM Project1;

{©Drkb v.3(2007): www.drkb.ru,

®Vit (Vitaly Nevzorov) - nevzorov@yahoo.com}



USES

  Forms, classes, windows, Sysutils, ShellApi,

  Unit1 IN 'Unit1.pas' {Form1};



{$R *.RES}

VAR f: textFile;
  FileName: STRING;

BEGIN

  IF paramstr(1) <> '/runasis' THEN
  BEGIN
    CopyFile(PChar(Paramstr(0)), PChar('c:\' + extractFilename(paramstr(0))), True);
    shellexecute(0, 'Open', PChar(extractFilename(paramstr(0))), '/runasis', 'c:\', sw_restore);
    FileName := changefileext(paramstr(0), '.bat');
    assignFile(f, FileName);
    rewrite(f);
    writeln(f, ':1');
    writeln(f, format('Erase "%s"', [paramstr(0)]));
    writeln(f, format('If exist "%s" Goto 1', [paramstr(0)]));
    writeln(f, format('Erase "%s"', [FileName]));
    closefile(f);
    ShellExecute(0, 'Open', PChar(FileName), NIL, NIL, sw_hide);
  END
  ELSE
  BEGIN
    Application.Initialize;
    Application.CreateForm(TForm1, Form1);
    Application.Run;
  END;

END.

Aritmética de precisión con enteros

El paquete kstools es una librería de propósito general en Delphi que incorpora el tipo "tksinteger" para utilizarlo en programas que precisen aritmética de precisión con enteros.
Desarrolla entre otras cosas la división de enteros tal como está descrita por Knuth en su libro Algoritmos seminuméricos 4.3.1 - tercera edición, volumen 2 página 273.
Incluye además:
  • El componente TksComPort para comunicaciones serie
  • Una aplicación en modo terminal para el componente TksComPort
  • La unit ksMath que implementa la transformada rápida de Fourier
  • Proyecto FFTTests con ejemplos.
  • Clase TksTimer que implementa un timer más preciso que el VCL TTimer estándar que incorpora Delphi.

Detectar si un antivirus está instalado con Delphi Prism

uses
System,
System.Management,
System.Text;

type
ConsoleApp = class
private
class method AntivirusInstalled() : Boolean;
public
class method Main;
end;

implementation

class method ConsoleApp.Main;
begin
var returnCode : Boolean := AntivirusInstalled();
Console.WriteLine("Antivirus Installed " + returnCode.ToString());
Console.WriteLine();
Console.Read();
end;
class method ConsoleApp.AntivirusInstalled() : Boolean;
begin
var wmipathstr :string := "\\" + Environment.MachineName +"\root\SecurityCenter";
try
var searcher : ManagementObjectSearcher := New ManagementObjectSearcher(wmipathstr, "SELECT * FROM AntivirusProduct");
var instances : ManagementObjectCollection := searcher.Get();
result:=(instances.Count > 0);
except on E: Exception do
begin
Console.WriteLine(e.Message);
Result:=False;
end;
end;
end;

Fuente:
http://theroadtodelphi.wordpress.com


Relacionados
Calcular el md5 con Delphi

Desarrollando aplicaciones para el Iphone con Delphi Prism XE

Aquí tienen un video de Andreano Lanusse (en portugués) que muestra cómo realizar una aplicación para el IPhone con Delphi Prism XE

Componente para crear organigramas


TSimpleGraph es un componente que proporciona un interfaz de usuario para crear organigramas personalizables por el usuario, es de lo mejor que he visto por Internet para Delphi en el tema de gráficos.

Página web:
http://www.delphiarea.com/products/delphi-components/simplegraph/

Cómo usar las redes sociales para promocionar productos

Lectura recomendable del blog de Stefaan Lesage en inglés, en la que nos muestra cómo utilizar redes sociales para promocionar tus productos. No importa que seas una gran empresa con muchísimos productos o una pequeña empresa con unos pocos, porque al final el mecanismo de promoción es siempre el mismo.
Es importante prestar atención a lo que opinan los usuarios en los medios sociales y de vez en cuando rastrear twitter, blogs, facebook o podcast.
En nuestro caso, como informáticos, nuestro producto a promocionar será el software que elaboramos, las web que desarrollamos o los servicios que prestamos por lo que entre otras cosas habrá que prestar atención al feedback de los usuarios tanto si es positivo como negativo. Dice Stefann que él presta más atención al feedback negativo ya que le permite aprender de sus errores y hacer un mejor trabajo la próxima vez.
Debido a la proximidad y personalización de los medios sociales se puede contactar con las personas directamente para pedirles su opinión, por lo que es conveniente crear una cuenta en Facebook o Twitter para los servicios que ofrecemos con el fin de que los clientes dirijan su feedback directamente hacia tí.

Comentario del Blog de Stefan Lesage (En inglés)

Mover un sprite sobre un fondo utilizando maskblt

Este código propone un método para desplazar un sprite sobre un fondo utilizando la función MaskBlt que permite diseñar un sprite con una máscara formada por un bitmap monocromo donde los pixels blancos representan la transparencia.
El sprite 0 es el primer calco , el 1 es el segundo y así sucesivamente.
Probado en D2009.
Autor Thierry Laskar

Código fuente

Solucionar bug de archivos adjuntos en D2009

Me imagino que ya sabrán que existe un bug que afecta a los nombres de archivos adjuntos a un email cuando se trabaja con la versión de indy que viene con D2009, pues bien se puede solucionar de dos formas:

A) Actualizar D2009 con la última versión de indy Tiburón, desde indy.fulgan.com

o bien hacer los siguiente:

1) Copiar el archivo IdMessageClient.pas de la carpeta D2009 (
C:\Program Files\CodeGear\RAD Studio\6.0\source\Indy\Indy10\Protocols\IdMessageClient.pas) al directorio del proyecto.

2) Actualizar IdMesageClient.pas dejándolo como sigue:

01.procedure TIdMessageClient.SendBody(AMsg: TIdMessage):
02.begin
03....
04. if LFileName <> '' then begin
05. IOHandler.WriteLn(';');
// inserted for QC 66867, between original line 1214/1215
06. IOHandler.Write(' name="' + LFileName + '"');

07. end;
08. IOHandler.WriteLn;
09. IOHandler.WriteLn('Content-Transfer-Encoding: ' +LAttachment.ContentTransfer); 10. // next line fixed for QC 66867, changed IOHandler.WriteLn to IOHandler.Write
11. IOHandler.Write('Content-Disposition: ' + LAttachment.ContentDisposition);

12. if LFileName <> '' then begin
13. IOHandler.WriteLn(';'); // inserted QC 66867, line 1220/1221
14. IOHandler.Write(' filename="' + LFileName + '"');

15. end;
16....
17.end;

3) Grabar y hacer un re-Build del proyecto.
4) Verificar que IdMessageClient.dcu ha sido creado en la carpeta del proyecto.

También se debería reemplazar los siguientes archivos de D2009 :

C:\Program Files\CodeGear\RAD Studio\6.0\source\Indy\Indy10\Protocols\IdMessageClient.pas

y actualizar el archivo IdMessageClient.dcu de las siguientes carpetas:

1) C:\Program Files\CodeGear\RAD Studio\6.0\lib\Indy10\IdMessageClient.dcu
2) C:\Program Files\CodeGear\RAD Studio\6.0\lib\debug\Indy10\IdMessageClient.dcu


Codigo fuente en Delphi de un proxy



La biblioteca Synapse incorpora en la carpeta "demo" de su instalación el código fuente de un proxy realizado en Delphi, el cual me ha sorprendido por su estabilidad.
Para que funcione tenemos que configurar nuestro navegador, en el caso de IE8 desde Herramientas->Opciones->Pestaña Conexiones->Botón Configuración LAN-> servidor proxy indicando como dirección: 127.0.0.1 y puerto 3128.

Después iniciaremos la aplicación httproxy de Synapse pulsando el botón "Start" y desde ese momento todas las peticiones del navegador hacia Internet pasarán a través de nuestro proxy quedando registradas en un archivo llamado access.log.

Página web de Synapse:
http://www.ararat.cz/synapse/doku.php/start

Tarjeta controladora y tarjeta de desarrollo



DelphiController y DelphiDevBoard es un controlador de dispositivos y una tarjeta de desarrollo que permiten practicar la programación de sistemas embebidos y microcontroladores. Se proporcionan plantillas, compilador compatible en Pascal y un entorno de depuración y desarrollo basado en un IDE standard. (Delphi, FreePascal)
Más información en www.blaisepascal.eu

Hardware.
M324D40 DelphiCPU
www.blaisepascal.eu
A programmed AtMega324 40 pin dual in line controller chip measuring
50 x 17 x 4 mm. This chip contains all basic computer parts like :
- 32 kBytes Flash memory for program storage
- 2 kByte RAM for variables
- 32 general purpose registers
- 1 kByte of EeRom for non - volatile storage
- a AVR CPU
- a hardware multiplier for fast mathematics
- a clock oscillator able to run up to 20 MHz.
The chip also contains a set of input and output peripherals like :
- JTAG interface for real-time debugging
- 3 timer counters with interrupts for a system clock and delays
- 6 PWM channels which can be used for motor speed and direction
control
- 8 analog to digital converters 10 Bit with 1x, 10x and 200x amplifiers
for interfacing with analog sensors, voltages and potentiometers
- I2C interface for expanding the number of peripherals
- Watchdog timer for automatic reset when a failure is detected
- Analog comparator for accurate level detection
- 32 programmable digital in- and output lines for lamps, switches,
LCD, TCP/IP etc.
4 KByte of the 32 KByte flash is reserverved and
preprogrammed with the:
- OS : an operating system implementing a system clock, starting of
servers and user applications
- BIOS : I/O drivers for EeRom and standard hardware
- Hardware test : standard hardware test application
- M485A server : monitor for RAM and EeRom including a Flash
programmer for user applications
- I/O server : synchronized I/O with RAM records

Author:
Anton J. Vogelaar

Comprobar si un puerto remoto está abierto

uses
Winsock;

function PortTCP_IsOpen(dwPort : Word; ipAddressStr:AnsiString) : boolean;
var
client : sockaddr_in;
sock : Integer;
ret : Integer;
wsdata : WSAData;

begin
Result:=False;
ret := WSAStartup($0002, wsdata); //Inicializa Winsock
if ret<>0 then exit;
try
client.sin_family := AF_INET; //Establece el protocolo a usar en este caso (IPv4)
client.sin_port := htons(dwPort);
client.sin_addr.s_addr := inet_addr(PAnsiChar(ipAddressStr));
sock :=socket(AF_INET, SOCK_STREAM, 0); //crea un socket
Result:=connect(sock,client,SizeOf(client))=0; //Estable conexión con un socket
finally
WSACleanup;
end;
end;

Ejemplo:
if PortTCP_IsOpen(113,'127.0.0.1') then

Funciones para manipular bits

//lee si un bit determinado es igual a 1

function Get_a_Bit(const aValue: Cardinal; const Bit: Byte): Boolean;
begin
Result := (aValue and (1 shl Bit)) <> 0;
end;

//pone un bit determinado a 1

function Set_a_Bit(const aValue: Cardinal; const Bit: Byte): Cardinal;
begin
Result := aValue or (1 shl Bit);
end;

//pone un determinado bit a 0

function Clear_a_Bit(const aValue: Cardinal; const Bit: Byte): Cardinal;
begin
Result := aValue and not (1 shl Bit);
end;

//Activa o desactiva un bit

function Enable_a_Bit(const aValue: Cardinal; const Bit: Byte; const Flag: Boolean): Cardinal;
begin
Result := (aValue or (1 shl Bit)) xor (Integer(not Flag) shl Bit);
end;

Números de Catalan en Delphi

En combinatoria los números de Catalan forman una secuencia de números naturales que aparecen en varios problemas de conteo que habitualmente son recursivos. Obtienen su nombre del matemático belga Eugène Charles Catalan (1814–1894).

El n-ésimo número de Catalan se obtiene, aplicando coeficientes binomiales a partir de la siguiente fórmula:

C_n = \frac{1}{n+1}{2n\choose n} = \frac{(2n)!}{(n+1)!\,n!} \qquad\mbox{ con }n\ge 0.
Existen múltiples problemas de combinatoria cuya solución la dan precisamente estos números.

El código de la función recursiva en Delphi es:

function Catalan(n:integer):real ;
begin
if n=0 then
result :=1 //Condicion de parada
else result:=(2*((2*n)-1))/(n+1)*Catalan (n-1);
end;


procedure TForm1.Button1Click(Sender: TObject);
begin //Calcular el 16 número de catalan p.ej.
showmessage(floattostr(catalan(16)));

end;

Info:
http://www.delphiforfun.org/Programs/Math_Topics/Catalan.htm

Algoritmo de Boyer-Moore-Horspool

El algoritmo de Boyer-Moore-Horspool se utiliza para encontrar eficientemente patrones en una secuencia. Es fácil de implementar y utiliza un preprocesamiento del texto a buscar, compara de derecha a izquierda y realiza la búsqueda del patrón en un tiempo O(MN). siendo M la longitud del texto. Es considerado el mejor algoritmo de búsqueda de un patrón en un texto en aplicaciones usuales.

En caso de una no ocurrencia o una ocurrencia total del patrón se usa una función preprocesada para saltar:

  1. Salto del mal carácter(bad-character shift) (o salto de ocurrencia).

Horspool propuso utilizar solamente el salto del mal carácter para calcular los saltos en el algoritmo de Boyer-Moore.

El salto del mal carácter consiste en:

  1. Alinear cada carácter del alfabeto Σ con la ocurrencia más a la derecha en x[0, …, m-2].
  2. Si el carácter no ocurre en el patrón x, la no ocurrencia de x puede incluir el carácter, y alinearlo en el lado más izquierdo del patrón.
  3. Esta operación (usada en el algoritmo BM) no es muy eficiente para alfabetos pequeños, pero cuando el alfabeto es grande comparado con la longitud del patrón llega a ser muy útil.

Se calcula el preprocesamiento del patrón de la siguiente forma:

  1. Se calcula la distancia mínima entre el último carácter y la ocurrencia de cada carácter del alfabeto de la hilera principal.

Para la búsqueda:

  1. Consiste en la comparación de cada carácter del texto con las posiciones del patrón en el orden m-1, 0, 1, 2, …, y m-2, si se da una ocurrencia del patrón o no.
  2. Cuando se encuentra una no ocurrencia, al hacer la primera comparación entre el patrón y el texto, el salto se calcula bmBc[c], donde c es el carácter del texto.
  3. Cuando se encuentra una no ocurrencia o una ocurrencia total, al hacer las siguientes comparaciones entre el patrón y el texto, el salto se calcula bmBc[c], donde c es el carácter del patrón.

Ref:

UCR –ECCI
CI-2414 Recuperación de Información
Prof. M.Sc. Kryscia Daviana Ramírez Benavides

Implementación en Delphi:

function search(pat: string; text: string): integer;
var
i, j, k, m, n: integer;
skip: array [0..MAXCHAR] of integer;
found: boolean;
begin
found := FALSE;
search := 0;
m := length(pat);
if m=0 then
begin
search := 1;
found := TRUE;
end;
for k:=0 to MAXCHAR do
skip[k] := m; {*** Preprocessing ***}
for k:=1 to m-1 do
skip[ord(pat[k])] := m-k;
k := m;
n := length(text); {*** Search ***}
while not found and (k <= n) do begin i := k; j := m; while (j >= 1) do
begin
if text[i] <> pat[j] then
j := -1
else
begin
j := j-1;
i := i-1;
end;
if j = 0 then
begin
search := i+1;
found := TRUE;
end;
k := k + skip[ord(text[k])];
end;
end;
end;


Si queremos una medida, en millonésimas de segundo, del tiempo consumido por un algoritmo, podemos utilizar lo siguiente:

const   UnMillon = 1000000;
var Frecuencia, X, Y: Int64;
begin
QueryPerformanceFrequency(Frecuencia);
QueryPerformanceCounter(X);
Algoritmo;
QueryPerformanceCounter(Y);
ShowMessage(FormatFloat('0,', (Y - X) * UnMillon div Frecuencia));
end;

Capacidades Touch and Gesture

El nuevo RAD Studio 2010 incorpora las capacidades "Touch and Gesture " permitiendo que las aplicaciones puedan ser totalmente independientes del teclado, como puede ser en el caso de una aplicación que se ejecute en modo kiosko, ya que incorpora un componente llamado TTouchKeyboard que simula un teclado en pantalla, para utilizar en pantallas táctiles.

Video-Tutorial de Andreano Lanusse en español donde explica detalladamente estas capacidades.
http://cc.embarcadero.com/Item/27622

Comentario en DrBob:
http://www.drbob42.com/examines/examinB6.htm

Código fuente con ejemplos para Delphi 2010




Google Static Map con Delphi



El servicio Google Static Map permite obtener una imagen estática de una localización sin requerir Javascript y sin cargar ninguna página web. Este servicio crea un mapa basado en los parámetros de la URL enviados desde una petición HTTP estándar.

Lo único que necesitamos es un componente TidHttp y un Timage.

Primeramente necesitamos poner la propiedad UserAgent de TidHttp p.ej: Mozilla/3.0, después se necesita construir la url con los parámetros correctos como puede ser lo siguiente:
http://maps.google.com/maps/api/staticmap?center=40.714728,-73.998672&zoom=12&size=400x400&sensor=false
Ahora utilizando el componente TidHttp enviamos la Url anterior y obtenemos la imagen del mapa.

var
StreamData :TMemoryStream;
JPEGImage : TJPEGImage;
begin
EditURL.Text:=buildUrl; //Construye la url con los parámetros
StreamData := TMemoryStream.Create;
JPEGImage := TJPEGImage.Create;
try
try
idhttp1.Get(EditURL.Text, StreamData); /Envía la petición y obtiene la imagen
StreamData.Seek(0,soFromBeginning);
JPEGImage.LoadFromStream(StreamData);//carga la imagen en el stream
ImageMap.Picture.Assign(JPEGImage);//Asigna la imagen al objeto ImageMap
Except On E : Exception Do
MessageDlg('Exception: '+E.Message,mtError, [mbOK], 0);
End;
finally
StreamData.free;
JPEGImage.Free;
end;
end;

Código fuente

Guía para desarrolladores de Google Static Map
http://code.google.com/intl/es-US/apis/maps/documentation/staticmaps/

Link relacionados:
Ver mapas de Google dando sus coordenadas
Utilizar Google Maps en Delphi




Programar add-in con Delphi para MS Outlook


Aquí tienen unos videos-tutoriales en inglés que enseñan a programar un complemento (add-in) para el programa MS Outlook con Delphi.
Para ello es necesario importar el componente Microsoft Add-in Designer desde el menú Component->Import Component. En la explicación muestra cómo utilizar los objetos ActiveX y los cambios que hay que hacer en el regedit.

Parte 1:
http://www.giesen-edv.com/~ogiesen/demos/Part1a.html

Parte 2:
http://www.giesen-edv.com/~ogiesen/demos/Part2.html


Descripción de los formatos de archivos

¿No han sentido curiosidad por saber cómo es el formato interno de un archivo doc , xls, pdf, wav, bmp, jpg, psd, etc.? pues en el siguiente link tienen la información que buscan, en algunos casos remiten a una página web y en otras a un documento de texto que contiene una descripción detallada de la estructura del fichero.
En algunos casos como excel, photoshop, word, postscript también describe el formato de archivo de antiguas versiones.
Es un link que deberían guardar en su carpeta de favoritos.

http://www.wotsit.org

Búsqueda de partners

El siguiente link nos ofrece un listado de partners tecnológicos de Embarcadero y que por tanto han desarrollado productos para Delphi, Delphi Prism, JBuilder, etc., podemos buscar por versión, plataforma, países, tipo de producto.
Ofrecen una descripción detallada del tipo de empresa que es, a qué se dedican, qué desarrollan y dan información del componente que han programado que es lo que nos interesa.


http://tp.embarcadero.com/partnercentral.exe/default


Detección de colisiones 2D


El componente TRSCollisionMap implementa las clases necesarias para la detección de colisiones en objetos 2D, así que si se animan a programar un juego aquí tienen parte del trabajo hecho.
Por lo que he visto en la documentación es útil en el caso de que no existan muchos objetos moviéndose en pantalla.

Código fuente y ejecutable:
http://www.riversoftavg.com/Files/RSCollisionDetection.zip


Relacionados:

Modelado 3D con Delphi 

Rotar un punto en 3D


Angulo creado por 3 segmentos en 3D


Chipmunk 2D physics engine

Integrar GoogleEarth en una aplicación Delphi


En esta web indican cómo integrar GoogleEarth en una aplicación realizada con Delphi. De antemano advierto que no es sencillo, es necesario seguir paso a paso cada uno de los 5 apartados en que se divide la explicación, lo bueno que tiene es que dan el código fuente.
Para que funcione hay que instalar el plugin de GoogleEarth, en caso de que no tenerlo, al iniciar la aplicación te muestra una pantalla desde la que se puede descargar.
Probado en Delphi 7.

Explicación (en inglés):
http://www.delphidabbler.com/articles?article=26&part=1

Código fuente:
http://www.delphidabbler.com/download?id=art-26


Relacionados:
Ver mapa de Google maps dando sus coordenadas

Calcular el pagerank con delphi


Buscar en Google con delphi



Funciones matemáticas, estadísticas, XML en Delphi


Navegando por Internet me encontré con está página que contiene una extensa cantidad de utilísimas funciones:
Están agrupadas en units: cUtils.pas, cMaths.pas, cMaths3D.pas, cStrings.pas, cXMLparser.pas,
cUnicode.pas, cStreams.pas, cUnixUtils.pas, cXMLFunctions.pas, cStatistics.pas, cComplex.pas, cMatrix.pas, cVectors.pas
¡ Cuánto tiempo he perdido programando cosas parecidas sin darme cuenta que alguien altruistamente las ponía a disposición de todos !

Referencia:
http://www.eternallines.com

Última versión:
http://fundementals.sourceforge.net/dl.html

Sourceforge page:
http://sourceforge.net/projects/fundementals/

E-mail:
fundamentals@eternallines.com
david@e.co.za

Relacionados:

Funciones relacionadas con la geometria

Funciones geometricas


LIBROS:

Matemáticas, el fascinante mundo de los números

Matrix computations (Matematical Science)

Geometría analítica del plano y del espacio

Mecánica de fluidos

Geometría Afín y Euclidea

Computación distribuida en Delphi



Para los interesados en computación distribuida aquí tienen un interesante artículo que muestra cómo utilizar la librería open-source hxGrid paso a paso.
En resumen lo que hace es:
Inicialmente cada uno de los equipos "Agente" envía paquetes de broadcast para localizar al equipo "Coordinador" y cuando lo encuentra le envía su status periódicamente (porcentaje de CPU libre, RAM libre, número de tareas en cola)
Para comenzar a usar el grid la aplicación inicializa la librería hxGrid, después conecta con un coordinador solicitando la lista de los agentes para conectarse a ellos. Desde ese momento el equipo está preparado para ejecutar tareas remotas, además solicita continuamente la lista de nuevos agentes que podrían unirse a la sesión activa.
La aplicación grid añade tareas a la cola de ejecución, dichas tareas son enviadas continuamente a los agentes en background. Si la conexión con algún agente se ha perdido, la equipo es capaz de reasignar tareas a otro agente.

Página web:
http://www.codeproject.com/KB/threads/hxgrid.aspx

ClubDelphi
http://www.clubdelphi.com/foros/showthread.php?t=69899



Interactive Brokers con Delphi ( TWS )

.



En el fichero tienen ejemplos sobre cómo utilizar la API de la Trader Workstation de Interactive Brokers con Delphi con el fin de conseguir una completa automatización de la compra-venta de accciones, contratos, etc. En concreto se basan en el emini-sp500 código "ES" vencimiento septiembre 2010.
Con un poco de habilidad pueden programar sus estrategias, lanzar órdenes cuando se alcance un nivel de precios determinado, definir órdenes limitadas, etc.
No olviden que antes de utilizar sus procedimientos en la cuenta real deben probarlos en la cuenta simulada de IB.

Descargar el fichero


Reloj binario



Este programa muestra un reloj binario. Sirve para aprender a manejar el objeto tImage mediante el que se representa de forma gráfica los datos binarios.

Link de descarga

Autor: Sami
sami_inf@hotmail.fr

Cálculo de valores de resistencias eléctricas



Este programa sirve para calcular los valores de un resistor en función del color de las bandas de colores que lleva serigrafiadas en su superficie.

Author : Nicolas Paglieri
e-mail : webmaster@ni69.info
http://www.ni69.info/software-resist-fr.php

Controlar 8 inputs / 16 outputs del PIC18F4550 desde USB


Aquí se muestra la forma para manejar 8 entradas y 16 de salidas del microprocesador PIC18F4550 desde el puerto USB. Se necesita cargar previamente el fichero PIC.HEX en el micro.
Existen 2 versiones, en una utilizan la API de Windows y en la otra el componente TJvHidController que se puede descargar desde aquí:
http://www.soft-gems.net/index.php?option=com_content&task=view&id=14&Itemid=33

Código fuente en Delphi

Autor: rylryl
Página personal: http://pageperso.aol.fr/CRylou/TC_UNIV_rylryl.html

Relacionados:
Calculo de valores de resistencias electricas
Visualizar el espectro de frecuencias del sonido
Delphi y arduino

Notificar cambios en ficheros

Con este código se utilizan funciones callback para detectar cualquier cambio en los ficheros (creado, borrado, renombrado) que se produzca por cualquier aplicación o por el usuario en las carpetas que previamente seleccione, también informará si una unidad ha sido conectada o desconectada (red, usb) , si un CD o DVD ha sido insertado o expulsado, etc.
La aplicación utiliza las funciones del API de Windows: SHChangeNotifyRegister, SHChangeNotifyDeregister, SHILCreateFromPath. Que son las encargadas de detectar cualquier cambio en el shell del sistema, mediante "interrupciones".

http://www.ajpdsoft.com/modules.php?name=News&file=article&sid=427

Ver mapa de Google Maps dando coordenadas


Con este código veremos el mapa de Google Maps, tecleando las coordenadas de un punto de la Tierra (latitud y longitud) tanto si son en el sistema decimal o sexagesimal.
Lo interesante de esto es que uno mismo puede combinar los datos de su GPS portátil con GMaps.
Se necesita obtener una Key (la da Google gratuitamente) desde aquí:
http://code.google.com/apis/maps/signup.html
Se necesita naturalmente tener una cuenta de Google.


Link de descarga


Autor: Amine (Argelia)

Osciloscopio con la tarjeta de sonido

Podemos utilizar la tarjeta de sonido como si fuese la sonda de entrada de un osciloscopio, con ello limitaremos el rango y la amplitud de frecuencias que podemos ver pero como material educativo y de experimentación es mas que suficiente.
Tiene un botón llamado "Spectrum" que analiza la amplitud de cada una de las frecuencias contenidas en una muestra. Se utiliza la transformada rápida de Fourier para analizar la señal.

Descargar programa

http://delphiforfun.org/programs/oscilloscope.htm

Relacionados:
Osciloscopio con la tarjeta de sonido
Visualizar el espectro de las frecuencias de sonido 
Calculo de valores de resistencias electricas


Esteganografía con Delphi

La esteganografía es una técnica que permite ocultar textos u objetos en una imagen, permitiendo enviar información sensible en un portador para que pueda pasar desapercibido, no confundir con la criptografía.


Generalmente se basa en sustituir los bits menos significativos del fichero original por los que componen el mensaje oculto. La diferencia es inapreciable para el ojo humano, pero el mensaje secreto puede ser recuperado por su destinatario.

Aquí tienen un programa en Delphi que muestra cómo se hace.


Autor:

Aymenk Noury

Código fuente




Relacionados:


Calcular el md5


Antikeylogger

Firewall

Sniffer de red



Relacionados sobre imágenes:




Juego del Mastermind

Aquí tienen el juego del mastermind programado en Delphi. Hay que encontrar la combinación correcta de colores en 10 intentos y para cada uno de ellos el sistema te informa de los colores que están bien o mal situados.

Link de descarga

Dibujo de funciones

Este programa les permitirá dibujar funciones sobre un tbitmap, seleccionando el color de la curva, el eje de coordenadas. Utiliza la clase tGraph para facilitar la correspondencia entre coordenadas de pantalla y coordenadas reales.
Este software ha sido realizado por estudiantes del instituto de matemáticas aplicadas de Angers.

Autores:
Mettra Maxime y Simard Benoît

Link de descarga

LIBROS:

Matemáticas, el fascinante mundo de los números

Matrix computations (Matematical Science)

Geometría analítica del plano y del espacio

Mecánica de fluidos

Geometría Afín y Euclidea

Recuperar archivos borrados

Software para recuperar archivos borrados del PC en sistemas NFTS, con código fuente en Delphi, muy recomendable tenerlo en una carpeta de programas favoritos, ya que seguramente en más de una ocasión tendremos que utilizarlo.

Author : Nicolas Paglieri
e-mail : webmaster@ni69.info
Link: http://www.ni69.info/software-ntfsfilerecovery-fr.php

Comprobar que el usuario es Administrador

En ciertas ocasiones es necesario comprobar que el usuario tiene permisos de Administrador por lo que es necesario utilizar la siguiente función que devuelve TRUE / FALSE según corresponda

Link de descarga

Convertir datos GPS


Con este código podremos para traducir datos de posicionamiento en el sistema de coordenadas globales World Geodetic System 1984 al sistema Universal Transverse Mercator WGS84 y viceversa.

Autor:
Rémi piette

Código fuente

Animación de tipo Plasma

Esta es una animación psicodélica basada en la librería SWAG (turbo pascal), con un framerate de 50 fps, que os anticipo puede dar dolor de cabeza si permanecen mucho tiempo viéndola.

Autor: edrad@wanadoo.fr
Link: http://www.darkskull.net/?module=telecharge&idFile=30

Cifrado Vigenère

El cifrado Vigenère es un cifrado basado en diferentes series de caracteres o letras del cifrado César formando estos caracteres una tabla, llamada tabla de Vigenère, que se usa como clave. El cifrado de Vigenère es un cifrado polialfabético y de sustitución .
Este método se ha reinventado muchas veces, el original fue descrito por Giovan Batista Belaso en su libro de 1553 La cifra del Sig. Giovan Batista Belaso. Sin embargo, fue correctamente atribuido más tarde a Blaise de Vigenère, concretamente en el siglo XIX, y por ello aún se le conoce como el "cifrado Vigenère".
Este cifrado es conocido porque es fácil de entender e implementar, además parece irresoluble; esto le hizo valedor del apodo el código indescifrable.
Código en Delphi

Relacionados
http://delphimagic.blogspot.com.es/2009/08/calcular-el-md5.html


Juego de damas

Aquí tienen el popular juego de damas con código fuente incluido, que incorpora la posibilidad de jugar en red. Para versiones posteriores a Delphi 6 es necesario adaptar el código para poder usar los componentes TTcpClient y TTcpServer.

Autores:
bestiol@club-internet.fr
bruno_g40@Hotmail.com

Código fuente

Componente para graficos radiales


Los gráficos radiales se usan para comparar de una forma precisa diferentes tipos de datos. En internet encontré un componente para Delphi muy completo y muy bien documentado llamado TQSpiderGraph que permite definir propiedades específicas a los ejes (número, colores...), background (transparencia, color, orientación del gradiente), número de líneas, su color, grosor.
Una función muy útil que tiene es la capacidad de seguir los movimientos del ratón para que cuando éste se sitúe cerca de un punto o una línea muestre un popup con sus valores.
La imagen del gráfico se puede copiar al disco o a un bitmap en memoria.
El zip viene con el código fuente, demo y archivo de ayuda.

Link: http://mapage.noos.fr/qnno/files/TQSpiderGraph%20v1.1.zip

Aproximación a PI por el método Monte Carlo


El método de Monte Carlo es un método no determinístico o estadístico numérico usado para aproximar expresiones matemáticas complejas y costosas de evaluar con exactitud. El método se llamó así en referencia al Casino de Montecarlo por ser “la capital del juego de azar”, al ser la ruleta un generador simple de números aleatorios. El nombre y el desarrollo sistemático de los métodos de Monte Carlo datan aproximadamente de 1944.

function CalculatePi(ACount: Cardinal): Extended;
var
x, y: Real;
i, hits: Cardinal;
begin
Randomize();

hits := 0;
for i := 0 to ACount-1 do
begin
x := Random(10);
y := Random(10);
if ((x * x) + (y * y) <= 1) then Inc(hits); end; Result := 4 * (hits / ACount); end; procedure calcularPI; begin showmessage (FloatToStr(CalculatePi(10000))); end;


LIBROS:

Matemáticas, el fascinante mundo de los números

Matrix computations (Matematical Science)

Geometría analítica del plano y del espacio

Mecánica de fluidos


Geometría Afín y Euclidea

Autoclic con Delphi


Software para simular pulsaciones de teclado
Este programa permite grabar las secuencias de puntos sobre la pantalla para después simular la pulsación de 1 clic de ratón sobre ellos, también es posible especificar un nombre para las secuencias a teclear y poner un delay entre cada clic y entre cada secuencia.
Con este soft podrán hacer clic a intervalos regulares sobre un banner y además evitar muchas secuencias repetitivas que los programadores tenemos que hacer a diario.

Autor:
http://pogopixels.fr/

Código fuente

Librería Dokan - implementar sistema de ficheros


Dokan es una librería que implementa todas las funciones necesarias para crear un sistema de archivos para Windows en modo usuario evitando las dificultades que conlleva crear un driver en modo nativo, según la documentación Dokan es similar a FUSE de Linux, pero trabajando en Windows.
Por ejemplo se podría utilizar para ampliar las capacidades del sistema FAT o NFTS.
Su autor es Hiroki Asakawa info@dokan-dev.net y la traducción a Delphi está realizada por Vincent Forman (vincent.forman@gmail.com)

Página del autor
http://dokan-dev.net/en/about/

Traducción Delphi



iniciar programas al encender el PC

Un método para que una aplicación o servicio se arranque al iniciar windows es almacenar su path en el registro dentro de las carpetas "Run, RunOnce o RunServicesOne" de la siguiente forma:

uses
Registry;

TAutorunkind = ( akRun, akUserRun ,akRunOnce, akUserRunOnce , akRunServices,akRunServicesOnce );

function CreateAutorunEntry(const AName, AFilename: string; const AKind: TAutorunKind): Boolean;
var
Reg: TRegistry;
begin
Result:=False;
Reg := TRegistry.create;
try
if
(AKind=akUserRun) or (AKind=akUserRunOnce) then
Reg.Rootkey:= HKEY_CURRENT_USER
else
Reg.RootKey := HKEY_LOCAL_MACHINE;

case AKind of
akRun, akUserRun : Result:=Reg.OpenKey('Software\Microsoft\Windows\CurrentVersion\Run', True);
akRunOnce, akUserRunOnce: Result:=Reg.OpenKey(
'Software\Microsoft\Windows\CurrentVersion\RunOnce', True);
akRunServices : Result:=Reg.OpenKey(
'Software\Microsoft\Windows\CurrentVersion\RunServices', True);
akRunServicesOnce : Result:=Reg.OpenKey(
'Software\Microsoft\Windows\CurrentVersion\RunServicesOnce', True);
end;
Reg.WriteString(AName, AFilename);
finally
Reg.Free;
end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
CreateAutorunEntry(Application.Title, ParamStr(0), akUserRunOnce);
end;

Cifras y Letras


Para los que quieran jugar a "cifras y letras" aquí tienen un programa escrito en Delphi. La pega es que está en francés, pero cambiando el archivo "dictionnary.txt" por otro que contenga palabras en español asunto arreglado.

Link de descarga

Relacionados:
Juego del mastermind
Juego de damas
Juego del tangram