Mostrando entradas con la etiqueta 1 PROGRAMAS. Mostrar todas las entradas
Mostrando entradas con la etiqueta 1 PROGRAMAS. Mostrar todas las entradas

Obtener los KBDI de los parches instalados en el sistema

Con este procedimiento se puede obtener una relación de las códigos de las actualizaciones de Microsoft que están instaladas en vuestro equipo. Hay que añadir en el uses la unit Registry y poner en el form de la aplicación un objeto tListbox y un tButton.

Si quieren más información sobre una actualización (p. ej. la nº 23422) modificar el enlace siguiente de esta forma:

http://support.microsoft.com?kbid=23422


Código fuente en Delphi

Leer cabeceras de archivos de mp3 con Delphi




Aquí os dejo un componente (TAudioInfo) que extrae información de las cabeceras de archivos mp3 (MPEG 1, 2 Layers I, II, III) y de archivos con tags ID3V1.1.




También puede leer el formato Xing VBR (bitrate variable)






Freeware con código fuente Delphi incluido








Link:







Formato de cabeceras MP3:









Autor:

Andrey V. Sorokin, Saint Petersburg, Russia anso@mail.ru







 





Crear un captcha con Delphi








Captcha es el acrónimo de Completely Automated Public Turing test to tell Computers and Humans Apart (Prueba de Turing pública y automática para diferenciar a máquinas y humanos).


Se suele usar en páginas web en las que se solicita información que se quiere garantizar que ha sido tecleada por un humano, ya que se presume que las máquinas son incapaces de leer el captcha.

Aquí tienen el código en Delphi para generar captchas



Otra forma de hacerlo:

procedure TForm1.letrasAnguladas(c : string; angulo : integer; nextPos : Integer);
var
logfont:TLogFont;
font: Thandle;
begin
LogFont.lfheight:=30;
logfont.lfwidth:=10;
logfont.lfweight:=900;

LogFont.lfEscapement:=angulo;
logfont.lfcharset:=1;
logfont.lfoutprecision:=OUT_TT_ONLY_PRECIS;
logfont.lfquality:= DEFAULT_QUALITY;
logfont.lfpitchandfamily:= FF_SWISS;
logfont.lfUnderline := 0;
logfont.lfStrikeOut := 0;

font:=createfontindirect(logfont);

Selectobject(Image1.canvas.handle,font);

SetTextColor(Image1.canvas.handle,rgb(0,180,0));
SetBKmode(Image1.canvas.handle,transparent);

Image1.canvas.textout(nextPos,Image1.Height div 3,c);
SetTextColor(Image1.canvas.handle,rgb(Random(255),Random(255),Random(255)));
deleteobject(font);
end;

//se llama así
for vX := 1 to Length(strCaptcha) do
letrasAnguladas(strCaptcha[vX],Random(600)+1,25*vX-15);

//añadimos algunas líneas
for i := 0 to 15 do begin
Image1.Canvas.Pen.Color := Random(100000);
Image1.Canvas.MoveTo(random(Image1.Width), random(Image1.Height));
Image1.Canvas.LineTo(random(Image1.Width), random(Image1.Height));
end;

y obtenemos esto:
enter image description here









Automátas celulares de estados finitos


Un autómata celular es un modelo matemático para un sistema dinámico que evoluciona en pasos discretos. Es adecuado para modelar sistemas naturales que puedan ser descritos como una colección masiva de objetos simples que interactúen localmente unos con otros.
Estos sistemas se aplicaron al campo de la física computacional por John Von Neumann en la década de los 50's.
Este caso es un ejemplo que se aplica a la conducta de los votantes. Desde el botón de "Configuración" se puede definir el algoritmo a utilizar (Moore, Von Neumann), modo de evolución (automática o paso a paso), radio y el tipo de inicialización (aleatoria, predeterminada)
Link:
http://ar.geocities.com/hlaforcada/Archivos/Vote.zip



Cerrar aplicaciones innecesarias de Windows


Muchos de vosotros habréis comprobado que existen muchas aplicaciones de Windows que se instalan sin que el usuario lo permita, me refiero a las que se ven cuando se pulsa el icono "Windows".

















como ven hay varias aplicaciones: "noticias", "mapas", "cocina", "juegos", "xbox", etc..., algunas se pueden desinstalar pulsando Uninstall














Pero otras no hay forma.





Cuando un PC desempeña su tarea en entornos empresariales, estas apps se deberían eliminar y para ello la solución que he encontrado es utilizar Powershell del siguiente modo:





1) Hacer clic con el botón derecho del ratón sobre el icono Windows.




2) Desde el menú Ejecutar teclear: powershell


3) Para ver la lista de aplicaciones instaladas teclear: 





Get-AppxPackage | Select Name, PackageFullName



















4)Para desinstalar una aplicación teclear:





Get-AppxPackage *NombreDeLaAplicacion* | Remove-AppxPackage





Aquí tenéis los comandos para eliminar la mayoría de ellas:





#Uninstall 3D Builder


Get-AppxPackage *3dbuilder* | Remove-AppxPackage





#Uninstall Camera:


Get-AppxPackage *windowscamera* | Remove-AppxPackage





#Uninstall Get Skype:


Get-AppxPackage *skypeapp* | Remove-AppxPackage





#Uninstall Groove Music:


Get-AppxPackage *zunemusic* | Remove-AppxPackage





#Uninstall Maps:


Get-AppxPackage *windowsmaps* | Remove-AppxPackage





#Uninstall Microsoft Solitaire Collection:


Get-AppxPackage *solitairecollection* | Remove-AppxPackage





#Uninstall Money:


Get-AppxPackage *bingfinance* | Remove-AppxPackage





#Uninstall Movies & TV:


Get-AppxPackage *zunevideo* | Remove-AppxPackage





#Uninstall News:


Get-AppxPackage *bingnews* | Remove-AppxPackage





#Uninstall OneNote:


Get-AppxPackage *onenote* | Remove-AppxPackage





#Uninstall People:


Get-AppxPackage *people* | Remove-AppxPackage





#Uninstall Phone Companion:


Get-AppxPackage *windowsphone* | Remove-AppxPackage





#Uninstall Photos:


Get-AppxPackage *photos* | Remove-AppxPackage





#Uninstall Sports:


Get-AppxPackage *bingsports* | Remove-AppxPackage





#Uninstall Weather:


Get-AppxPackage *bingweather* | Remove-AppxPackage





#Uninstall Xbox:


Get-AppxPackage *xboxapp* | Remove-AppxPackage





#Uninstall Sway (Office):


Get-AppxPackage *Office.Sway* | Remove-AppxPackage





#UPDATE 2 - New Apps


#Uninstall Twitter:


Get-AppxPackage *Twitter* | Remove-AppxPackage





#Uninstall TuneInRadio


Get-AppxPackage *TuneInRadio* | Remove-AppxPackage





#Uninstall Netflix


Get-AppxPackage *Netflix* | Remove-AppxPackage








Para ejecutar fácilmente las instrucciones anteriores: seleccionarlas todas, después hacer Ctrl+V, y luego pegarlas en la ventana de Powershell (no hace falta ir una a una)








Imagen








Si más adelante queréis reinstalar estas apps tan sólo tenéis que teclear desde la consola de Powershell lo siguiente:





Get-AppxPackage -AllUsers| Foreach {Add-AppxPackage -DisableDevelopmentMode -Register "$($_.InstallLocation)\AppXManifest.xml"}




















Seguro que has usado estos programas realizados con Delphi


Resultado de imagen de delphi software






En el blog de Jon L. AAsenden me he encontrado con un enorme listado de programas realizados con Delphi, algunos de ellos sí que sabía que estaban realizados con Delphi, pero otros me han sorprendido como por ejemplo Macromedia Dreamweaver, Skype, Nero Burning Rom, Panda Antivirus, para que luego digan que Delphi no se usa cuando es todo lo contrario, cada vez se utiliza más.


Delphi es el IDE definitivo para desarrollar aplicaciones multiplataforma ( Android, MacOS, OSx, Windows y desde hace poco también para Linux) de forma nativa. Un mismo código para múltiples plataformas.





Listado de programas:







Anti spyware and system tools



File and disk



Authoring and help



Database



Multimedia, print and web



Networking



Scientific


  • Altium Designer Board

  • Orca Flex, design and analysis of offshore marine systems

  • SOFIA, Nasa software project

  • Orca Lay, planning and optimization of pipeline and umbilical lay procedures

  • Orca Bend, design tool for efficient optimization of elastomeric bend stiffeners

  • Diptrace, Schematic capture software



Misc titles



Programming languages and IDE’s



Commercial gaming



Emulators


  • nesTen, Nintendo emulator written in Delphi

  • winNes, Nintendo emulator written in Delphi

  • ulTee, Another Nintendo emulator also written in Delphi

  • DSP, Arcade emulator written in Delphi

  • Dolphin, Nintendo Gamecube and WII emulator written in Delphi

  • DxBx, XBox emulator written in Delphi





Rutinas para utilizar ficheros y carpetas con Firemonkey









A continuación les relaciono una serie de rutinas basadas en Firemonkey, asociadas con la utilización de ficheros y carpetas.

Realmente hay muchas más, pero como lo que quiero es que esta página les pueda ser útil, sólamente he puesto las que mas se usan cuando se programa.

Algunas realmente simplifican lo que antes teníamos en la VCL, como por ejemplo el obtener los ficheros de una carpeta, ya que con Firemonkey se puede hacer con una única instrucción:  TDirectory.GetFiles



Recordar que hay que añadir en el apartado "uses" la unit System.IOUtils 



- Obtener los ficheros de una carpeta




VAR
DirList: TStringDynArray;
S:String;
BEGIN

DirList := TDirectory.GetFiles(DirPath, '*.jpg');
IF Length(DirList) = 0 THEN
BEGIN
// showmessage('No hay ficheros en ' + DirPath)
END
ELSE // Ficheros encontrados
BEGIN
FOR S IN DirList DO
BEGIN
listbox1.items.add(S);
END;
END;
END;


- Obtener el tamaño de un fichero


FilesizeByName esta en la unit  IDGlobalProtocols



Tamano := FilesizeByName('c:\fichero.txt');


- Obtener la fecha de creación de un fichero



fecha := DatetimeToStr(Tfile.GetCreationTime('c:\fichero.txt'));


- Obtener la fecha del último acceso



fecha := DatetimeToStr(Tfile.GetLastAccessTime('c:\fichero.txt'));


- Obtener la fecha de la última modificación



fecha := DatetimeToStr(Tfile.GetLastWriteTime('c:\fichero.txt'));


- Guardar el contenido de un fichero en un string



var
s:string;
S := Tfile.ReadAllText('c:\fichero.txt'));


- Borrar un fichero



Tfile.Delete(TPath.Combine(DirPath, 'fichero.txt'));


- Comprobar que existe un fichero



if tFile.Exists(TPath.Combine(DirPath, 'fichero.txt')) 
then showmessage('Existe')
else showmessage('NO existe');


- Copiar un fichero


tfile.Copy('c:\origen.jpg','c:\destino.jpg');


- Encriptar y desencriptar un fichero (sólo para Windows)


tfile.Encrypt('c:\fich.jpg');
tfile.Decrypt('c:\fich.jpg');



- Añadir texto a un fichero existente


texto:='texto que se quiere añadir';
TFile.AppendAllText('c:\fichero.txt',texto,tEncoding.utf8);



- Crear una carpeta



TDirectory.CreateDirectory(DirTMP);


- Comprobar que existe una carpeta



  IF TDirectory.Exists(DirTMP) THEN
BEGIN
showmessage('existe la carpeta');
END;


- Copiar el contenido de una carpeta en otra



   TDirectory.Copy('c:\carpetaOrigen','c:\carpetaDestino')



- Borrar recursivamente el contenido de una carpeta



  BorrarRecursivamente:=true;
tDirectory.Delete('c:\carpetaABorrar',BorrarRecursivamente);



- Obtener la fecha de creación de una carpeta



fecha := DatetimeToStr(TDirectory.GetCreationTime('c:\documentos'));


- Obtener la fecha del último acceso a una carpeta



fecha := DatetimeToStr(TDirectory.GetLastAccessTime('c:\documentos'));


- Obtener la fecha de la última modificación de una carpeta



fecha := DatetimeToStr(TDirectory.GetLastWriteTime('c:\documentos'));



Programa complejo resuelto con una línea de código en Delphi

Partimos del supuesto que recibimos el encargo de realizar un programa en Delphi que debe hacer una llamada a una API, la cual nos devuelve un resultado en formato JSON, con 1000 campos, pero sólo queremos visualizar 3 de ellos (URL, TITLE, EXPLANATION) en el formulario de presentación al cliente.

¿Cómo hacemos esto de una forma visual en Delphi?, pues a continuación les explico detalladamente los pasos a seguir:


Añadimos un componente tRestResponseDataSetAdapter, un tFDMemTable y para hacer pruebas un tStringGrid, que nos mostrará todo el conjunto de datos

En la propiedad "Dataset" del tRestResponseDataSetAdapter seleccionamos FDMemTable1 y en "Response" selecciono "RESTResponse1"

Con el botón derecho del ratón pulsamos sobre el componente FDMemtable1 y seleccionamos AddBindSource, con lo se creará otro componente llamado "BindSourceDB1"

Volvemos a pulsar con el botón derecho del ratón sobre FDMemTable1 y seleccionamos Bind Visually... abriéndose una ventana llamada "LiveBindings Designer" 


Si vinculamos FDmemTable1 con el componente StringGrid1, uniendo con el ratón los campos marcados con un asterisco, de esta forma:


al iniciar el programa llamando a "Execute", de esta forma:

PROCEDURE TFORM1.INICIO;
BEGIN
RESTRequest1.Execute;
END;

veremos que los 1000 campos que nos ha devuelto la API se ven el Grid, que no es lo queremos en este caso, ya que únicamente necesitamos que se muestren en pantalla 3 de ellos, entonces ¿cómo se hace esto?, pues gracias al componente tBindingsList    ¡Este es el truco de magia!

1) Hacemos doble clic sobre el componente BindingsList1


(que se habrá creado al hacer la vinculación anterior)

 


 2) Sobre el apartado Bind Components hacemos clic con el botón derecho y seleccionamos la opción "New LinkControlToField1" y hacemos clic sobre esa nueva línea que se habrá creado para ver las propiedades en el Inspector de Objetos.


 

Allí en la propiedad "DataSource" seleccionamos "BindSourceDB1"  y en "FieldName" escribimos "Title" (es uno de los campos que nos interesa visualizar)


Cerramos la ventana de Edición del BindingsList y Actualizamos la ventana "LiveBindings Designer" haciendo clic con el botón derecho del ratón y activando el menú "Refresh Designer"
 
Veremos que se ha creado un nuevo ítem "Title (Invalid)", lo de Invalid me imagino que es por que el dataset está cerrado en la fase de diseño.
 

y hacemos lo mismo para los otros dos campos.

Después sólo queda vincular los ítems "Title (invalid), url (invalid) y explanation (invalid)" a los componentes tEdit-Text, uniendo con el ratón los campos anteriores con el campo "Text", tal como se muestra en la imagen:

 

Eliminamos el componente "StringGrid1"

Y eso es todo, ahora al ejecutar el programa

PROCEDURE TFORM1.INICIO;
BEGIN
RESTRequest1.Execute;
END;
 




Veríamos el resultado que nos interesa, lo que se traduce en una mayor rapidez de ejecución del programa, ya que nos ahorramos procesar 997 campos, de los 1000 que devuelve la API.


Además, como han podido ver, todo se ha hecho de forma visual con sólo 1 línea de código (RESTRequest1.Execute),
simplemente asombroso y es que además este mismo programa funciona en
Android, IOS, Linux y Windows y la portabilidad es instantánea.

¿A que merece la pena pasarse a Delphi? 

Imáginense la cantidad de código que habría que escribir con otros lenguajes de programación para hacer lo mismo, y es que Delphi utilizando programación visual no tiene rival.



 

Simulación del movimiento de los electrones en un campo electrico

Espectacular simulación realizada con OpenGL del movimiento de los electrones cuando atraviesan un campo eléctrico. Como muestra la image...