WindHack
Este usuario no ha compartido ninguna información biográfica
Web: http://daw-labs.com
Entradas de WindHack
Calcular el factorial de un número
4 abr
Bueno, aclararles que no soy para nada un fan de VB, y tampoco es que me la lleve muy bien con él, pero en fin…Cuando toca hacer trabajos o actividades en determinado lenguaje no queda más alternativa ¿no?.
Esta función hace poco la expuse aquí en ObjectPascal, ahora hice una traducción a Visual Basic, un poco tosca pero es lo que hay, xD.
' --------------------------------------- '|---------- Función Factorial ----------| '|-- Calcula el factorial de un número --| '|--------- Autor: .:WindHack:. ---------| '|-- Sitio Web: http://daw-labs.com ---| ' --------------------------------------- Public Function Factorial(Num As Double) As String Dim I As Integer If Num >= 170 Then Factorial = "Numero Infinito..." Else For I = 1 To Num - 1 Num = Num * I Factorial = Num Next End If End Function
Con “recursividad”:
Public Function FactorialR(Num As Double) As Currency If (Num > 0) Then FactorialR = Num * FactorialR(Num - 1) Else FactorialR = 1 End If End Function
Saludos,
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
Instalar Lazarus en Ubuntu
3 abr
Hola a todos.
Después de mucho intentar, de instalar y desinstalar Lazarus logré hacerlo funcionar perfectamente. El principal problema era que no me compilaba, tiraba errores por falta de unidades (.pas) y algunas librerías…Algo nada motivante ¬¬.
Bien, si alguno ha tenido un problema parecido (Es muy común este tipo de errores) ésta será la solución perfecta (Casi perfecta).
Lo primero que debemos hacer es desinstalar por completo FPC (Free Pascal Compiler) y Lazarus, para ello teclearemos los siguientes comandos en la terminal:
sudo aptitude purge fp-compiler
Y eliminamos los directorios/archivos:
sudo rm /etc/fpc.cfg
sudo rm -R /usr/lib/fpc
Realizamos lo mismo con Lazarus:
sudo aptitude purge lazarus
Y eliminamos el directorio:
sudo rm -R /usr/lib/lazarus
Creo que ya no tendremos ningún archivo de Lazarus/FPC que nos pueda causar problemas…
Para instalarlo iremos al siguiente enlace ( http://sourceforge.net/project/showfiles.php?group_id=89339 ) y descargamos estos paquetes:
lazarus-0.9.28.2-0.i586.rpm 66.0 MB 2010-03-05 fpc-src-2.2.4-0.i386.rpm 17.9 MB 2009-10-30 fpc-2.2.4-0.i386.rpm 24.9 MB 2009-10-30Una vez los hayas descargado procedemos a convertirlos en paquetes .deb con la aplicación/comando alien. Si no lo tienes teclea esto en terminal:
sudo apt-get install alien
Luego nos posicionamos en la carpeta donde están los archivos de Lazarus/FPC usando el comando cd
windhack@windhack-desktop:~$ cd /home/windhack/Documentos/Lazarus
Y tecleamos siguiendo este orden en terminal:
- sudo alien –scripts fpc-2.2.4-0.i386.rpm
- sudo alien –scripts fpc-src-2.2.4-0.i386.rpm
- sudo alien –scripts lazarus-0.9.28.2-0.i586.rpm
Terminado de “alienizar” dichos paquetes, los instalamos. Solo queda configurar los Más >
Clasificación de lenguajes de programación
1 abr
Un lenguaje de programación es un lenguaje inventado para controlar una máquina, (normalmente, un ordenador). Hay muchísimos, de toda clase de tipos y características, inventados para facilitar el abordaje de distintos problemas, el mantenimiento del software, su reutilización, mejorar la productividad, etc.
Los lenguajes de programación se pueden clasificar según varios criterios. He encontrado doce en total: Nivel de abstracción, propósito, evolución histórica, manera de ejecutarse, manera de abordar la tarea a realizar, paradigma de programación, lugar de ejecución, concurrencia, interactividad, realización visual, determinismo y productividad.
Hay que tener en cuenta también, que en la práctica, la mayoría de lenguajes no pueden ser puramente clasificados en una categoría, pues surgen incorporando ideas de otros lenguajes y de otras filosofías de programación, pero no importa al establecer las clasificaciones, pues el auténtico objetivo de las mismas es mostrar los rangos, las posibilidades y tipos de lenguajes que hay.
1. Nivel de abstracción.
Según el nivel de abstracción, o sea, según el grado de cercanía a la máquina: o Lenguajes de bajo nivel: La programación se realiza teniendo muy en cuenta las características del procesador. Ejemplo: Lenguajes ensamblador. o Lenguajes de nivel medio: Permiten un mayor grado de abstracción pero al mismo tiempo mantienen algunas cualidades Más >
iTalc HiHack by Khronos
31 mar
Esta es una aplicación programada por el español Khronos. Cito al autor:
Historia de porqué cree este programa: estoy estudiando el ciclo superior de informática y las aulas de informática cuentan con este maldito programa xD. Cuando un profesor me aburria o contaba cosas que ya sabía me ponía a navegar en internet o a hacer cualquier otra cosa en el pc, pero siempre me llamaban la atención por no atender. En la clase de Redes de Área local, la profesora estaba explicando el temario e impidió la conexión a nuestras cuentas de usuario así que abrí la máquina virtual y me puse a navegar xD, pero se me cerro la máquina virtual de repente. No sabía que es lo que pudo pasar, y la profesora dijo luego: “Yo de vosotros no usaría el msn, tuenti y demás en clase porque os podeis quedar sin cuentas”. Ante eso, miré los procesos del sistema y me puse a buscar en google uno a uno (los que no conocia) y me encontre con el maldito iTalc xD.
El programa dispone de 3 métodos para terminar/asesinar el proceso:
- El primero es para cuentas con privilegios y usa las típicas APIs de Windows (AdjustTokenPrivileges, OpenProcess, TerminateProcess…) Más >
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í
Notepad en GNU/Linux – Lazarus
31 mar
Estaba instalando el Lazarus en mi PC, y apenas finalizó la instalación me dió por estrenarlo programando un Notepad sencillo.
(* Programado por .:WindHack:. The Notepad GNU... Fecha de COmpilacion: 09 - 19 - 2009 IDE: Lazarus *) unit Unit1; {$mode objfpc}{$H+} interface uses Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs, Menus, StdCtrls, ActnList,unit2; type { TForm1 } TForm1 = class(TForm) MainMenu1: TMainMenu; MenuItem11: TMenuItem; MenuItem9: TMenuItem; MText: TMemo; MenuItem1: TMenuItem; MenuItem10: TMenuItem; MenuItem2: TMenuItem; MenuItem3: TMenuItem; MenuItem4: TMenuItem; MenuItem5: TMenuItem; MenuItem6: TMenuItem; MenuItem7: TMenuItem; MenuItem8: TMenuItem; Open: TOpenDialog; Save: TSaveDialog; procedure FormCreate(Sender: TObject); procedure MenuItem10Click(Sender: TObject); procedure MenuItem11Click(Sender: TObject); procedure MenuItem2Click(Sender: TObject); procedure MenuItem4Click(Sender: TObject); procedure MenuItem6Click(Sender: TObject); procedure MenuItem7Click(Sender: TObject); procedure MenuItem8Click(Sender: TObject); procedure MenuItem9Click(Sender: TObject); procedure MenuItem20Click(Sender: TObject); private { private declarations } public { public declarations } end; var Form1: TForm1; const Espacio = ' - '; implementation { TForm1 } procedure TForm1.MenuItem4Click(Sender: TObject); var FileName:String; begin if Open.Execute then MText.Lines.LoadFromFile(Open.FileName); FileName := Open.FileName; Caption := ExtractFileName(FileName+Espacio+'Ejemplo Notepad Ubuntu by .:WIndHack:.'); end; procedure TForm1.MenuItem6Click(Sender: TObject); begin MText.CopytoClipBoard; end; procedure TForm1.MenuItem7Click(Sender: TObject); begin MText.CutToClipboard; end; procedure TForm1.MenuItem8Click(Sender: TObject); begin MText.PasteFromClipboard; end; procedure TForm1.MenuItem9Click(Sender: TObject); begin MText.Undo; end; procedure TForm1.MenuItem20Click(Sender: TObject); begin Application.Terminate; end; procedure TForm1.FormCreate(Sender: TObject); begin MText.Align:=alClient; end; procedure TForm1.MenuItem10Click(Sender: TObject); begin MText.SelectAll; end; procedure TForm1.MenuItem11Click(Sender: TObject); begin Form2.ShowModal(); end; procedure TForm1.MenuItem2Click(Sender: TObject); var FileName:String; begin if Save.Execute then begin FileName := Save.FileName; MText.Lines.SaveToFile(SAve.FileName); Caption :=ExtractFileName(FileName+Espacio+'Ejemplo Notepad Ubuntu by .:WIndHack:.'); end else Exit; end; initialization {$I unit1.lrs} end.
Bien, solo hay una falla…¿Cuál?, el tamaño del compilado, pues Lazarus o mejor dicho FreePascal, genera ejecutables extremadamente grandes.
Si desean descargar el source, solo presionen aquí
Más >
Funciones sencillas y simples
31 mar
Aquí dejaré algunas funciones sencillas que me han sacado de varios apuros.
1º – Calcular múltiplo. Función para calcular los múltiplos en un rango determinado.
function CalcularMultiplo(Desde,Hasta,Multiplo:Integer):String; var I:Integer; begin for I:=Desde to Hasta do begin if I mod Multiplo = 0 then Result := Result + IntToStr(I) +',' end; end;
2º – Factorial. Función para calcular el factorial de un número.
function Factorial(Num:Integer):String; var I:Integer; B:Extended; begin B := Num; For I:=1 to Num - 1 do B := B * I; Result := FloatToStr(B); if Num > 170 then Result := 'Numero Infinito...' end;
3º – Par o Impar. Función para saber si un número es par o impar.
function ParOImpar(Num:Integer):String; begin if Num mod 2 = 0 then Result := IntToStr(Num)+' Es un número par' else Result := IntToStr(Num)+' Es un número impar' end;
4º – Es divisible. FUnción para saber si un número es divisible por otro.
function EsDivisible(Num1,Num2:Integer):String; begin if (Num1 mod Num2 = 0) then Result := 'Es divisible.' else Result := 'NO es divisible.'; End;
Espero les sea de ayuda.
Saludos,
Aplicación que habla [SAPI]
31 mar
Mirando por ahí me encontré con una librería de Microsoft muy interesante, es la “Microsoft Speech Object Library“, pero ¿Qué hace exactamente?, pues lo que hace ésta librería es permitirnos hacer o divertirnos con nuestra aplicación agregándole un “modulador” de voz.
En fin, me tomé el trabajo de hacer una aplicación de ejemplo:
Agrego el código…
unit Main; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, OleServer, SpeechLib_TLB, ComCtrls, Buttons, ShellAPI; type TFrm_Speech = class(TForm) SPVoice: TSpVoice; Memo_Hablar: TMemo; Track_Velocidad: TTrackBar; Lb_Rate: TLabel; Lb_Volume: TLabel; Track_Volume: TTrackBar; Btn_Speak: TBitBtn; Spd_Web: TSpeedButton; procedure Btn_HablarClick(Sender: TObject); procedure Track_VelocidadChange(Sender: TObject); procedure Track_VolumeChange(Sender: TObject); procedure Spd_WebClick(Sender: TObject); private { Private declarations } public { Public declarations } end; var Frm_Speech: TFrm_Speech; implementation {$R *.dfm} procedure TFrm_Speech.Btn_HablarClick(Sender: TObject); begin SPVoice.Speak(Memo_Hablar.Text,0) end; procedure TFrm_Speech.Spd_WebClick(Sender: TObject); begin ShellExecute(0,'open','http://foro.latinohack.com/',nil,nil,0); end; procedure TFrm_Speech.Track_VelocidadChange(Sender: TObject); begin SPVoice.Rate := Track_Velocidad.Position end; procedure TFrm_Speech.Track_VolumeChange(Sender: TObject); begin SPVoice.Volume := Track_Volume.Position end; end.
También pueden crearlo llamando a la función CreateOleObject que es idéntica a la función CreateObject de muchos lenguajes como VBS.
uses ComObj; var Voice: OLEVariant; begin Voice := CreateOLEObject('SAPI.SpVoice'); Voice.Speak('Hello LatinoHack!', 0); end;
Les dejo el link de descarga de la aplicación de ejemplo más la SAPI.
-Descarga:
http://www.box.net/shared/rdzuulmv14
Más >

