Asegurar / monitorizar Firebird

Estos son algunos tips que hay que tener encuenta para proteger las bases de datos Firebird:



-Cambiar la contraseña:

gsec –user SYSDBA –pa "antiguo pass" –modify SYSDBA –pw "nuevo pass"


-Abrir el puerto 3050 como aquí te indica si quieres que los usuarios accedan desde fuera a tu sistema, si estás en un entorno web en donde tienes en el servidor tus bases de datos esto no hace falta hacerlo.

Ejecutar Firebird como non-system-user:

-Crear un usuario por ejemplo "UsuarioFB", que no pertenezca a ningun grupo de usuarios del sistema y en la ventana de propiedades desmarcar el check "Allow logon to terminal server"

-En la carpeta donde estén las bases de datos en Propiedades->Seguridad añadir el usuario "UsuarioFB" con los permisos de lectura, escritura,listar directorios, listado y ejecución.

En entornos web con que des permisos al usuario "iusr" de lectura y escritura es suficiente.

- Hay que cambiar las propiedades del servicio "Firebird Server – DefaultInstance" y "FB Guardian" de la siguiente manera:

1) desde Propiedades->Recovery cambiando todos los desplegables a "restart recovery"

2) desde Propiedades->Log on pinchar en "This account" y seleccionar el usuario "UsuarioFB" con la contraseña y usuario que hayamos indicado previamente.

3) desde Propiedades->General marcar en tipo de inicio "Automático"

Por regla general, sólo el proceso del servidor Firebird debería tener acceso a los archivos de base de datos. Los usuarios no necesitan, y no deben tener, el acceso a los archivos - ni siquiera de sólo lectura. Ellos consultan bases de datos a través del servidor, y el servidor se asegura de que sólo los usuarios obtengan el tipo de acceso permitido (en su caso) a cualquier objeto dentro de la base de datos.



Monitorización

Firebird incorpora tablas de monitorización que permiten conocer información relativa a la base de datos y a las consultas de los clientes respecto a la base de datos conectada, sentencias preparadas, transacciones, etc

Las tablas son las siguientes:

MON$DATABASE: base de datos conectada. Con información como ruta de la base de

datos, versión de ODS, identificadores de proceso, etc.

- MON$ATTACHMENTS: Conexiones realizadas. Con información de estado, usuario que

hace la conexión, protocolo de conexión, etc.

- MON$STATEMENTS: Sentencias preparadas para ejecutar. Con información como

identificadores, texto, estado, etc.

- MON$CALL_TACK: Pila de llamadas de las sentencias PSQL activas.

- MON$IO_STATS: Estadísticas de I/O.

- MON$RECORD_STATS: Estadísticas a nivel de fila.

- MON$MEMORY_USAGE: Uso de memoria actual.

- MON$CONTEXT_VARIABLES: Variables de contexto conocida



Ejemplos de consultas:



-Para saber todos los identificadores de procesos con carga de CPU actuales:

SELECT MON$SERVER_PID

FROM MON$ATTACHMENTS

WHERE MON$ATTACHMENT_ID <> CURRENT_CONNECTION

AND MON$STATE = 1



-Para obtener información sobre las aplicaciones clientes

SELECT MON$USER, MON$REMOTE_ADDRESS,

MON$REMOTE_PID,

MON$TIMESTAMP

FROM MON$ATTACHMENTS

WHERE MON$ATTACHMENT_ID <> CURRENT_CONNECTION



-Para obtener el nivelde aislamiento de la transacción actual

SELECT MON$ISOLATION_MODE

FROM MON$TRANSACTIONS

WHERE MON$TRANSACTION_ID = CURRENT_TRANSACTION



-Para obtener las sentencias actualmente activas

SELECT ATT.MON$USER,

ATT.MON$REMOTE_ADDRESS,

STMT.MON$SQL_TEXT,

STMT.MON$TIMESTAMP

FROM MON$ATTACHMENTS ATT

JOIN MON$STATEMENTS STMT

ON ATT.MON$ATTACHMENT_ID = STMT.MON$ATTACHMENT_ID

WHERE ATT.MON$ATTACHMENT_ID <> CURRENT_CONNECTION

AND STMT.MON$STATE = 1



Créditos:

Simon Carter

Vicente Tejero Trueba (Monitorización)


















Multibuscador con Delphi


Este pequeño programa realiza una búsqueda de archivos utilizando programación multi-hilo.

El buscador estándar de Window permite también realizar búsquedas en varias rutas, pero las realiza en serie, es decir: cuando termina de buscar en una carpeta comienza con la siguiente.

Con este programa se puede buscar en varias carpetas de forma simultanea, mejorando así el tiempo de búsqueda, especialmente en búsquedas sobre unidades de red de distintos servidores (mejora los tiempos del buscador de Windows en un 140% para unidades locales de disco duro y en un 300% para unidades en red.

La idea original y el desarrollo son de Salvador Jover (www.sjover.com) y JM (www.lawebdejm.com).

Realizado inicialmente para la revista Síntesis del Grupo Albor (www.grupoalbor.com)



Codigo fuente






Biblioteca de funciones matemáticas MPArith


Esta es una impresionante biblioteca de funciones matemáticas en Delphi, para cálculos en punto flotante, con números racionales y operaciones en alta precisión con enteros.


Según el autor el código no es el más eficiente, pero a cambio es comprensible, compacto, open source y puede ser compilado a partir de Delphi 7.

Para ejecutar los demos hay que cambiar la extensión del archivo demo *.pas a *.dpr y se iniciará en modo consola.



Ejemplo:

Si queremos calcular la operación z=1/3 habría que hacer lo siguiente:



uses

BTypes, mp_types, mp_base, mp_supp, mp_real,sysutils;



var

p,r,s,t,z:mp_float;

r1:real;

begin



//se inicializan las variables

mpf_initp3(s,t,z,mpf_get_default_prec);

mpf_set_ext(s,1);

mpf_set_ext(t,3);

mpf_div(s,t,z);

writeln('Rdo con MPArit ',mpf_decimal(z,80));

mpf_clear3(s,t,z); //Se liberan las variables

//El rdo es: 3.333333333333333333333333333333333333333333E-1



//comparación con el método habitual para calcular 1/3

r1:=1/3.0;

writeln('Rdo con Delphi: '+FloatToStrF(r1,ffexponent,8,20));

//el Rdo es: 3.3333333E-1



end;





Descargar biblioteca de funciones


Pagina oficial












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

Dar capacidades de scripting a tu aplicacion

Hoy os presento el componente freeware Artformula que permite dar capacidades de scripting a una aplicación Delphi , para que un usuario pueda escribir y ejecutar código dentro de nuestro programa. En el programa demo asimila los scripts a macros y los utiliza para aplicarlos en un tRichEdit haciéndonos ver lo fácil que es utilizarlos en caso de que tengamos que programar un editor de textos.

Ejemplo de scripts:
1) Abrir un fichero y mostrar su contenido:

begin
print('This is a TArtFormula Demo');
print('==========================');
print('');
var 'f' end;
$f := file.new;
file($f).name := 'info';
file($f).open('read');
while not file($f).eof do
print(file($f).readln);
wend;
file.freeall;
end

2) Resolver una ecuación lineal utilizando matrices:

begin
var "n","i","j","k","d" end;
$n := input("Input dimension","Dimension of matrix:",3);

for $i:=1; $i <= $n; $i++ do
for $j:=1; $j <= $n; $j++ do
var "a"+$i+"_"+$j end;
$a[$i,$j] := input("Input element","a["+$i+","+$j+"] = ",if $i = $j ; 1 ; 0 end);
next;
next;

for $i:=1; $i <= $n; $i++ do
var "b"+$i, "x"+$i end;
$b[$i] := input("Input element","b["+$i+"] = ",1);
next;

for $i:=1; $i < $n; $i++ do
for $k:=$i+1; $k <= $n; $k++ do
$d:=$a[$k,$i]/$a[$i,$i];
for $j:=$i+1; $j <= $n; $j++;
$a[$k,$j]:=$a[$k,$j]-$a[$i,$j]*$d;
end;
$b[$k]:=$b[$k]-$b[$i]*$d;
next;
next;

for $i:=$n; $i >= 1; $i-- do
for $j:=$i+1; $j <= $n; $j++;
$b[$i]:=$b[$i]-$a[$i,$j]*$x[$j];
end;
$x[$i]:=$b[$i]/$a[$i,$i];
next;
print("Result:");
for $i:=1; $i <= $n; $i++; print("x["+$i+"] = "+$x[$i]); end;

end


El lenguaje de script tiene las siguientes características:
-Permite definir variables
-Tiene comandos de asignación
-Operadores de incremento y decremento
-Función Return
-Utiliza:
BEGIN...END
Sentencias IF
Bucles WHILE, UNTIL y LOOP
funciones de interface como: msg('text','caption',props), input('caption', 'text', defvalue)


El componente incorpora la posibilidad de evaluación de expresiones y el cálculo de derivadas con respecto a "x" o "y" de una función.
Las funciones que permite son las siguientes: (tomado de la ayuda del programa)

Arithmetic operation:

x + y, x - y, x * y, x / y, x % y (Mod), x ^ y (power), x\ y (Div)

Logical operation (true=1, false=0):
x > y, x < y, x >= y, x <= y, x = y, x <> y, ! x (not), x & y (and), x | y (or), x xor y

Bitwise operations:
x && y (band), x || y (bor), !!x (bnot), x bxor y, x >> y (shr), x << y (shl)

Predefined constants:
Pi = 3.1415926535897932385
True = 1
False = 0

Functions:

sin, cos, tan, sinh, cosh, tanh, asin, acos, atan, asinh, acosh, atanh, sqrt, exp, log, lg (log base 10), int (integer part of a number), frac (fractional part of a number), abs, sign, rnd, randomize,max(x,y...), min(x,y,...), count(x,y,...), sum(x,y,...), sumofsquares(x,y,...), avg(x,y,...), variance(x,y,...), variancep(x,y,...), stddev(x,y,...), stddevp(x,y,...) , iff(cond,x,y) (if cond = true then result = x else result = y), isnumber(x), chr(x), length(s), trim(s), trimleft(s), trimright(s) lowercase(s), uppercase(s), midstr(s,x,y), leftstr(s,x), rightstr(s,x), pos(s,t), code(s), format(s,x), formatf(s,x), stringofchar(c,n), concat(s1,s2,...), date(s), now, formatdate(s,d), year(d), month(d), day(d), hour(d), minute(d), second(d), millisecond(d), isleapyear(n), dayofweek(d), encodedate(y,m,d)


Autor:

Artem V. Parlyuk, e-mail:artsoft@nm.ru, http://artsoft.nm.ru

Descargar codigo



















Solucion del cubo de Rubik con Delphi








Este soft permite ver de una forma gráfica y paso a paso cada uno de los movimientos que hay que hacer para solucionar el cubo de Rubik.


Realmente es espectacular ver el cubo moviéndose en 3D siguiendo cada uno de los patrones calculados por el programa.


Las animaciones se implementan en Delphi "a pelo" sin utilizar módulos parecidos a OpenGL o GLScene, por lo que es muy instructivo ver cómo se hace la transformación de coordenadas del cubo 3D a 2D junto con su rotación.


Pulsando con el botón derecho del ratón sobre la imagen del cubo podremos rotarlo en la dirección que nos interese.

Si hacéis clic sobre el cubo en la ventana "Vue 3D"  veréis cómo se mueve en 3 dimensiones.

¿Sabías que hay muchos tipos de cubo de rubik, los puedes ver aquí ?



Descargar programa



Descargar codigo



Sitio Web


























Como instalar el componente tProeffectimage

Continuando con el post de ayer

http://delphimagic.blogspot.com/2011/05/programa-para-generar-efectos-graficos.html

a continuación os muestro cómo instalarlo en Windows XP:



Instalación en Delphi 7:



1) Abrimos el archivo dclusr.dpk que está en

c:\archivos de programa\borland\delphi7\lib

2) En la ventana que nos aparece pulsamos el botón "Add"

3) Desde la pestaña "Add unit" y en la caja "Unit File name" localizamos el archivo Proeffectimage.pas y pulsamos el botón OK

4) Después pulsamos el botón "Compile" y "Install" y si todo está correcto veremos en la pestaña de componentes "Samples" el icono Proeffectimage.



Instalación en Delphi 2009:



Es prácticamente igual lo que cambia es que hay que abrir el archivo dclusr.dproj que está en

c:\archivos de programa\CodeGear\RadStudio\6.0\lib

y después hay que ir al menú View->Project Manager












Programa para generar efectos gráficos


Con el componente freeware tProeffectimage escrito por Babak Sateli podrán generar alucinantes efectos gráficos en sus programas, además de una manera muy sencilla ya que lo único que hay que hacer es añadir un trackbar para obtener el parámetro asociado a cada una de las funciones ( está probado en Delphi 7 y Delphi 2009) :



El siguiente código viene en el ejemplo que acompaña a la instalación:



Case EffectsList.ItemIndex of

0: ProEffectImage.Effect_GaussianBlur (TrackBar.Position);

1: ProEffectImage.Effect_SplitBlur (TrackBar.Position);

2: ProEffectImage.Effect_AddColorNoise (TrackBar.Position * 3);

3: ProEffectImage.Effect_AddMonoNoise (TrackBar.Position * 3);

4: For i:=1 to TrackBar.Position do

ProEffectImage.Effect_AntiAlias;

5: ProEffectImage.Effect_Contrast (TrackBar.Position * 3);

6: ProEffectImage.Effect_FishEye (TrackBar.Position div 10+1);

7: ProEffectImage.Effect_Lightness (TrackBar.Position * 2);

8: ProEffectImage.Effect_Darkness (TrackBar.Position * 2);

9: ProEffectImage.Effect_Saturation (255-((TrackBar.Position * 255) div 100));

10: ProEffectImage.Effect_Mosaic (TrackBar.Position div 2);

11: ProEffectImage.Effect_Twist (200-(TrackBar.Position * 2)+1);

12: ProEffectImage.Effect_Splitlight (TrackBar.Position div 20);

13: ProEffectImage.Effect_Tile (TrackBar.Position div 10);

14: ProEffectImage.Effect_SpotLight (TrackBar.Position ,

Rect (TrackBar.Position ,

TrackBar.Position ,

TrackBar.Position +TrackBar.Position*2,

TrackBar.Position +TrackBar.Position*2));

15: ProEffectImage.Effect_Trace (TrackBar.Position div 10);

16: For i:=1 to TrackBar.Position do

ProEffectImage.Effect_Emboss;

17: ProEffectImage.Effect_Solorize (255-((TrackBar.Position * 255) div 100));

18: ProEffectImage.Effect_Posterize (((TrackBar.Position * 255) div 100)+1);

19: ProEffectImage.Effect_Grayscale;

20: ProEffectImage.Effect_Invert;



end;{Case}



Fuente:

babak_sateli@yahoo.com

http://raveland.netfirms.com




Descargar codigo











Detector de movimiento con Delphi



Este software detecta el movimiento entre imágenes tomadas por una webcam, se pueden ajustar varios parámetros como la sensibilidad, pixels verificados y el retardo antes de avisar. Cuando salta un aviso nos enviará un email ( antes hay que cambiar el nombre del host SMTP ) y se guardará en la carpeta "detection" una imagen jpg de ese instante.

Es interesante observar cómo se inicializa el dispositivo de captura de imagen de la siguiente forma:



hcam:=capCreateCaptureWindowA('',0,0,0,320,240,handle,0);

sendmessage(hcam,1034,0,0);

form1.DoubleBuffered:=true;



Descargar codigo fuente


















Ejemplo de uso de un proxy con Delphi

Este es un ejemplo de utilización de un proxy con indy.
Es interesante observar cómo se programa el componente AntiFreeze que se utiliza para evitar el bloqueo de la aplicación, ya que indy trabaja en modo no asíncrono, de tal forma que cuando se intenta realizar una conexión la aplicación se quedará bloqueada hasta que lo consiga, añadiendo el componente AntiFreeze se consigue minimizar este comportamiento.
El procedimiento UTF8ToWideString está en la biblioteca JEDI VCL.
procedure TForm1.Button1Click(Sender: TObject);
Var
Resp : String;
begin
Resp := webSession('http://www.elmundo.es');
if Length(Resp)>0 then
MessageDlg('Got the body ok',mtInformation,[mbOk],0);
end;

function TForm1.webSession(sURL : ansistring) : ansistring;
var
SStream : Tstringstream;
HTTPCon : TIdHTTP;
AntiFreeze : TIdAntiFreeze;
begin
Result := '';
if Length(SettingsForm.edtProxyServer.text) >= 7 then // 0.0.0.0
Try
SStream := NIL;
AntiFreeze := NIL;
HTTPCon := NIL;
Try
SStream := tstringstream.Create('');
{ Create & Set IdHTTP properties }
HTTPCon := TIdHTTP.create;
HTTPCon.HandleRedirects := true;
{ Check Proxy }
if checkproxy('http://www.google.com') then
Begin
HTTPCon.ProxyParams.ProxyServer := SettingsForm.edtProxyServer.text;
HTTPCon.ProxyParams.ProxyPort := StrToInt(SettingsForm.edtProxyPort.Text);
HTTPCon.ProxyParams.BasicAuthentication := True;
HTTPCon.ProxyParams.ProxyUsername := SettingsForm.edtProxyServer.Text;
HTTPCon.ProxyParams.ProxyPassword := SettingsForm.edtProxyUserName.Text;
End;
{ Create another AntiFreeze - only 1/app }
AntiFreeze := TIdAntiFreeze.Create(nil);
AntiFreeze.Active := true;
HTTPCon.Get(sURL,SStream);
Result := UTF8ToWideString(SStream.DataString);
Finally
If Assigned(HTTPCon) then FreeAndNil(HTTPCon);
If Assigned(AntiFreeze) then FreeAndNil(AntiFreeze);
If Assigned(SStream) then FreeAndNil(SStream);
End;
Except
{ Handle exceptions }
On E:Exception do
MessageDlg('Exception: '+E.Message,mtError, [mbOK], 0);
End;
end;

function TForm1.checkproxy(sURL : ansistring) : boolean;
var
HTTPCon : TIdHTTP;
AntiFreeze : TIdAntiFreeze;
begin
Result := False;
Try
{ Inti vars }
AntiFreeze := NIL;
HTTPCon := NIL;
Try
{ AntiFreeze }
AntiFreeze := TIdAntiFreeze.Create(NIL);
AntiFreeze.Active := true;
{ Create & Set IdHTTP properties }
HTTPCon := TIdHTTP.Create(NIL);
HTTPCon.ProxyParams.ProxyServer := SettingsForm.edtProxyServer.text;
HTTPCon.ProxyParams.ProxyPort := StrToInt(SettingsForm.edtProxyPort.Text);
HTTPCon.ProxyParams.BasicAuthentication := True;
HTTPCon.ProxyParams.ProxyUsername := SettingsForm.edtProxyServer.Text;
HTTPCon.ProxyParams.ProxyPassword := SettingsForm.edtProxyUserName.Text;
HTTPCon.HandleRedirects := true;
HTTPCon.ConnectTimeout := 1000;
HTTPCon.Request.Connection := 'close';
HTTPCon.Head(sURL);
Finally
{ Cleanup }
if Assigned(HTTPCon) then
Begin
{ Return Success/Failure }
Result := HTTPCon.ResponseCode = 200;
If HTTPCon.Connected then HTTPCon.Disconnect;
FreeAndNil(HTTPCon);
End;
if Assigned(AntiFreeze) then FreeAndNil(AntiFreeze);
End;
Except
On E:EIdException do ;
{ Handle exceptions }
On E:Exception do
MessageDlg('Exception: '+E.Message,mtError, [mbOK], 0);
End;
end;

Leer los datos del visor de sucesos

Este software permite leer los datos del visor de sucesos de windows xp o windows 7 Aplicación, seguridad y sistema.





Fuente: http://nono40.fr.st

nono40@fr.st

Descargar código





Actualizar la hora en el PC

Function PonerEnHora(Fecha:TDateTime):Boolean;
Var Infos :TSystemTime;
Zone :TTimeZoneInformation;
Rdo :Integer;
Begin

Result:=False;
Rdo:=GetTimeZoneInformation(Zone);
// Fecha es Hora local =>se ajusta el decalaje para obtener la hora absoluta
Case Rdo Of
TIME_ZONE_ID_UNKNOWN : Fecha:=Fecha+( Zone.Bias /(24*60));
TIME_ZONE_ID_STANDARD : Fecha:=Fecha+((Zone.Bias+Zone.StandardBias)/(24*60));
TIME_ZONE_ID_DAYLIGHT : Fecha:=Fecha+((Zone.Bias+Zone.DaylightBias)/(24*60));
Else
Exit;
End;
Infos.wYear :=YearOf (Fecha);
Infos.wMonth :=MonthOf (Fecha);
Infos.wDayOfWeek :=DayOfWeek (Fecha);
Infos.wDay :=DayOf (Fecha);
Infos.wHour :=HourOf (Fecha);
Infos.wMinute :=MinuteOf (Fecha);
Infos.wSecond :=SecondOf (Fecha);
Infos.wMilliseconds :=MillisecondOf (Fecha);
Result:=SetSystemTime(Infos);
End;

(se necesita tener derechos administrativos para actualizar la hora del sistema)

y la llamada sería:

If PonerEnHora(EncodeDate(2011,4,22)
+EncodeTime(17,0,0,0))
Then ShowMessage('Puesta en hora OK')
Else ShowMessage('Error al poner en hora');

Utilizar el componente Windows Media Player en Delphi


Lo que vamos a hacer es incorporar el objeto tWindowsMediaPlayer en Delphi 2009 . Al final de este proceso aparecerá en la "Tool Palette" dentro de la pestaña "ActiveX".



Desde el menú Component->Import Component

- Seleccionar “Import ActiveX Control” y pulsamos “Next”

- Marcamos “Windows Media Player” y pulsamos “Next”

- En la casilla “Palette page” marcamos “ActiveX” y pulsamos “Next”

- Dentro de las opciones disponibles hacemos clic en “Install to existing package”

Pulsamos el botón “Browse” y localizamos el archivo “dclusr.dpk” que en Delphi 2009 está en C:\Archivos de programa\Codegear\Rad Studio\6.0\lib y pulsamos “Finish”.



Si todo es correcto tendremos lo siguiente:





Los componentes los tendremos en View-> Tool Palette->ActiveX



No olvidar indicar desde Tools->Options->Delphi Options->Library Path

El siguiente path: “C:\documents and settings\ .....\mis documentos\rad studio\6.0\Imports, ya que allí es donde se encuentra la unit WMPLib_TLB necesaria para compilar nuestro programa

Para crear un nuevo programa vamos a File->New->VCL Forms application Delphi
Y en el form de la aplicación arrastramos el componente tWindowsMediaPlayer desde la paleta de componentes (ActiveX)




Y en la propiedad URL indicamos el archivo de música que queremos reproducir.
También se puede poner un tButton para ejecutar la función “Play”, “Pause” o “Stop”

//Funcion Play
WMP.URL:='Cancion1.mp3';
WMP.controls.play;
ArchivoQueSeEstaReproduciendo.Caption:=WMP.currentMedia.name;

//Funcion Pause
WMP.controls.pause;

//Funcion Stop
WMP.controls.stop;

//Estado
CASE WMP.playState of
wmppsUndefined: ;
wmppsStopped: ;
wmppsPause: ;
end;

//Gestión del volumen
WMP.Settings.volume:=50;

//Crear una nueva playlist
WMP.playlistCollection.newPlaylist(EdTitrePlayList.Text)

//controles
WMP.controls.previous;
WMP.controls.next;

//repetir modo aleatorio
WMP.settings.setMode('shuffle',true);

//repetir modo loop
WMP.settings.setMode('loop',true);










Simulación del enfriamiento de una partícula


Este es un algoritmo para calcular el grado de enfriamiento de una partícula que se mueve en el espacio 2D.
Se calcula aplicando una ecuación diferencial de Newton para el enfriamiento de la materia. Lo interesante es que si una partícula cruza el camino de otra, en su intersección se calentará más de lo que la segunda partícula habría calentado habitualmente. Esto es debido a que el calor residual que ya estaba allí, se suma al calor de la nueva partícula que está llegando.

Web: http://www.partow.net/projects/virtualpflame/index.html
Código fuente: http://www.partow.net/downloads/particleflame-source.zip

Cómo utilizar Delphi Prism XE para crear aplis para iPhone, iPod Touch y iPad


Manual en inglés de 73 páginas desarrollado por Brian Long de Embarcadero en el que muestra cómo desarrollar aplis para iPhone, iPod y iPad con Delphi Prism XE, imprescindible para los interesados en este tema.

Clic aquí para descargar el manual

Netstat


Este programa muestra la salida del comando "netstat" dando información de las conexiones activas mostrando la Ip local, Ip remota, puerto, estado (listening, established, close_wait, closed, time_wait), pid y proceso asociado a la conexión.


Lo más fácil sería abrir un shell, ejecutar el comando netstat y mostrar su salida, pero para los quieren saber más aquí tienen su programación en Delphi utilizando la unit iphelp.pas



Referencia: club delphi

Enlace

Código fuente














Driver para Kinect en Delphi

Driver y funciones de ayuda del controlador Kinect de Microsoft para Windows. El driver Dll se puede descargar desde aquí http://codelaboratories.com/get/nui/
El código está realizado en Delphi 2010.

Referencia: http://www.delphifr.com/codes/KINECT-TEST-V1_52494.aspx

Codigo fuente Delphi

Además tienen en el siguiente link información de un programador que ha creado el componente TKinect
http://www.lakraven.com/delphi-stuff/tkinect/

Obtener parametros de los paneles solares

Programa que calcula partiendo de los siguientes datos: (se obtienen de la hoja de características del fabricante de los módulos fotovoltaic...