Código fuente en Delphi
▻★★★ Blog sobre el lenguaje de programación delphi, incluye software, tutoriales, aplicaciones, videos, código fuente, trucos (about delphi, tips, tutorials, applications, source code, advanced programs, code snippets )
Obtener los KBDI de los parches instalados en el sistema
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:
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:
Automátas celulares de estados finitos
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)
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
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:
- Nero Burning Rom, CD/DVD burning software
- Skype, network telephony, voIP application
- Macromedia DreamWeaver, HTML website builder [bought by Adobe]
- Embarcadero C++ Builder IDE, Commercial C++ IDE written in Delphi
- Smart Mobile Studio, IDE and compiler toolchain for HTML5/JavaScript
- Homesite, HTML website editor [bought by Adobe, merged with DreamWeaver]
- FL Studio Pro, professional sound sequencer and synthesizer
- InstallAware, software installer
- InnoSetup, software installer
- DBase, rock solid database management application [Delphi & C++]
- WinRAR, compression application
- Partition Magic, Disk partitioning and cloning suite
- The online trader, Live stock exchange and trading application
- Syncback Pro, Brilliant backup application
Anti spyware and system tools
- Panda Titanium Antivirus, commercial antivirus
- Spyware Terminator, Anti spyware suite
- Spybot Search And Destroy, Anti spyware suite
- PC Tools Spyware Doctor, Anti spyware kit for Windows
- TuneUp Utilities, system optimizer
- Aida64, Benchmark software
File and disk
- BeyondCompare, file comparison and merge application
- Total Commander, file management application
- Super Copier, Win32/64 file copy/move dialog replacements
- CloneDVD, DVD copying software
- Ultra ISO, DVD and CD program
Authoring and help
- Help and Manual, Helpfile and book authoring software
- HelpNDoc, HTML help writer application
- SSuite Office Software, full office package written in Delphi
Database
- Oracle SQL Developer, SQL programming software
- Nexus DB, Commercial database engine written in Delphi
- MySQL Admin tools, Database management suite for mySQL
- SQL Navigator, SQL management application
- Toad for Oracle, de-facto SQL management for Oracle DB
- ElevateDB, Commercial database engine written in Delphi
Multimedia, print and web
- RadioBoss, Radio management software
- Ultimate paint, Image editor and drawing program
- IcoFX, icon and glyph editor
- KMplayer, Video and Movie application
- Responsive Layout Maker Pro, HTML WYSIWYG website designer
- Pro Motion, Pixel perfect image editor
- Media Monkey, Music manager application
- Press To Go, high-end printing press layout and management
- Gold Wave, Sound editor
Networking
- Jotta Online Backup, Cloud backup service
- TeamSpeak, network telephony, voIP application
- Hamachi, VPN Software [C++ builder combo]
- Avant browser, web browser written in Delphi
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
- Personal Historian, Ancestry and genealogy program
- Family Atlas, Ancestry and genealogy program
- Basic Premiere, Organ donor software
- Omni Accounts, Accounting software
Programming languages and IDE’s
- Morfik, Ajax native server website builder
- Elevate Web Builder, Javascript RAD IDE
- Dark Basic, game programming language
- PhpED, PHP coding editor
- RapidPHP, PHP coding IDE
- Smart Inspect, In-Depth debugging and log framework
- RAD PHP, Commercial PHP programming IDE and framework
- Finalbuilder, Commercial build management for programmers
- Lazarus, Open Source IDE for freepascal
- Freepascal, Open source object pascal compiler toolchain
Commercial gaming
- Space Rangers, Game written in Delphi
- Abra Academy, Game title by Big Fish games
- Tunngle, global LAN gaming network
- Soldat, online action game
- Age of Wonders, strategy game
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)
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...
-
Aquí tienen cómo se envía un stream o un archivo con Indy10 dentro de una red de ordenadores . Incluye el procedimiento principal en el Cl...
-
Seguidamente os dejo una lista bastante amplia de funciones escritas en Delphi que se utilizan cuando estamos programando una aplicación q...
-
Los códigos QR son una forma eficiente de almacenar y acceder a información. Las ventajas de usarlos son: Facilidad de uso : Los códigos Q...












