Written by xinyimanposted in Lazarus 1.0 Novembre 17, 2011, 09:20:00 am21649 ViewsRating: 0 (0 Rates)Print
A volte può capitare di dover intercettare tasti premuti in altri programmi, per esempio per creare un generatore di numeri pseudo-casuali basandosi su quello che si è scritto negli ultimi 5000 tasti premuti. Bene per fare questo usiamo una funzione (purtroppo non multipiattaforma, gira solo su windows) che si chiama GetAsyncKeyState. Vediamo un piccolo esempio che logga in una TMemo i tasti premuti sulla tastiera.
procedure TForm1.Timer1Timer(Sender: TObject); var Tasto, i: integer; Esci: boolean; begin i:=0; Esci:=FALSE; while ((i<=255)AND(Esci=FALSE)) do begin if (GetAsyncKeyState(i)=-32767) then begin Memo1.Text:=Memo1.Text + Chr(i); Esci:=TRUE; end; Inc(i); end; end;
procedure TForm1.FormCreate(Sender: TObject); begin memo1.Clear; Timer1.Interval:=10; end;
end.
Bene, come potete vedere il programma è molto semplice, prima di tutto si necessita di dichiara la unit di nome Windows poi all'avvio del programma scatta un timer che ogni 10 millesimi di secondo verifica se è stato schiacciato un tasto che è compreso tra il valore numerico 0 e il valore numerico 255. Se così fosse lo trasforma in un carattere (tramite funzione Chr()) e lo stampa sull'oggetto TMemo. Potete trovare questo esempio al seguente indirizzo:
E' ovvio che queste cose possono essere usate anche per fare un keylogger (cosa che io ho fatto per strutturare un esempio, ma è un keylogger davvero banale e del tutto inoffensivo) ma lo scopo di tale articolo è quello di fare formazione non quello di dare spunti per creare software illegali. Quindi si declina ogni responsabilità per usi illeciti che si possono fare dall'uso di queste informazioni.
Written by xinyimanposted in Lazarus 1.0 Novembre 17, 2011, 08:54:00 am25018 ViewsRating: 0 (0 Rates)Print
Spesso in un applicazione si necessita di generare dei report, ed eventualmente stampare su PDF tali report. Per poter lavorare con i report in Lazarus ci viene in aiuto l'ottimo LazReport che è già presente nella vostra installazione di Lazarus, bisogna vedere solo se è installato oppure no.Diamo per assodato che si sa come installare un nuovo pacchetto .lpk in Lazarus. Allora per prima cosa scarichiamo l'esempio che andremo a vedere all'indirizzo: www.lazaruspascal.it/esempi/SimpleAlbum.zip
Scompattiamo, apriamo il progetto con Lazarus e compiliamo.
Bene il progetto si appoggia ad un database di nome SimpleAlbum.s3db che serve per passare al report tutti i dati che voglio, le configurazioni sono passate attraverso un file ini mentre i dati sono passati tramite un file txt. Se volete provare l'esempio dopo aver compilato basta che lanciate da una Console/Terminale il seguente comando
project1.exe Dati.Txt Config.ini
Se invece volete lanciare l'eseguibile che è già presente nel file compresso allora la sintassi è:
SimpleAlbum.exe Dati.Txt Config.ini
Giocate con il file di configurazione per capire come si comporta il progetto. Solo una premessa, perchè tutto vada a buon fine aprite il file dati.txt (compreso nell esempio) e sostituite la scritta PATH con il percorso dove è sitata la cartella appena compressa, se per esempio abbiamo scompattato l'esempio in c:\ allora sostituiamo PATH con c:\
Spero che l'esempio possa essere utile a qualcuno per capire come lavorare con i report, con le immagini jpg (per esempio all'interno c'è l'esempio di come ridurre le immagini JPG per ottimizzare tempi e spazio del risultato finale) e come esportare in PDF i propri report creati con LazReport.
Una nota va fatta, ExportPDF (che è un estensione di LazReport ha un piccolo bug corretto da Lazarus 0.9.31 in poi ovvero che non mantiene le proporzioni delle immagini sul PDF esportato) per ovviare a questo problema basta sostituire la cartella ExportPDF con una nuova.
MyCinema è un software per la gestione di uno o più punti cassa presenti in un cinema. Questo progetto è stato scritto da Sammarco Francesco e rilasciato sotto licenza GNU GPL. Questo software è ancora una beta, ed è completo al 95%, sostanzialmente mancano le trasmissioni dell'incassato giornaliero agli enti interessati e la messa a punto di alcuni report.
Andrebbe anche testato l'uso in MULTIPOSTAZIONE del programma, ma siccome l'autore non dispone di decine di computer per cercare di mettere in crisi il software non è riuscito a testarlo come vorrebbe.
Il progetto fa uso di diverse librerie non preinstallate in Lazarus come DCPCrypt e TDBSimpleComponents (scritto sempre da Sammarco Francesco), quindi si necessita di installarle.
Questo software l'autore lo ha scritto per prendere dimestichezza con Lazarus e il Free Pascal quindi non ha fatto uso di strumenti che ha imparato a conoscere dopo (ad esempio Zeos), usa come database firebird.
Nella versione rilasciata esiste una cartella di nome database che contiene il database a cui fa riferimento il progetto, contiene già alcuni dati di prova, copiatelo dove più vi aggrada registratelo magari con flamerobin per vedere che funziona tutto (user=sysdba password=masterkey).
Per dire a MyCinema dove andare a cercarsi il database bisogna modificare il file configurazioni.xml modificando la voce contenuta tra i due tag .
La voce host identifica su quale computer è il database, 127.0.0.1 identifica sul computer locale, se invece fosse stato in remoto dovevamo mettere l'indirizzo IP del pc remoto. La voce pathdb identifica la cartella nella quale si trova il database. La voce db identifica il nome del database. Le voci username e password sono le credenziali di accesso cifrate. Una nota particolare va alla voce modalita che può assumere i valori 1 e 2, se è settato sul valore uno permette di vendere i biglietti scegliendo i posti da assegnare al cliente, se invece si sceglie il valore 2 allora si vendono i biglietti senza poter scegliere la posizione del cliente nella sala.
MyCinema è stato pensato per essere un 1. software multipostazione 2. gestisce gli abbonamenti 3. gestisce un multisala (definendo come ogni sala è composta) 4. gestisce più tariffe personalizzabili esempio (tariffa intera, tariffa scolastica, tariffa festiva, tariffa anziani, ecc) 5. multiutenza con permessi gestibili a singolo utente 6. reportistiche riepilogative
Per accedere al programma usate le seguenti credenziali user: root password: toor
All'interno della cartella MyCinema troverete anche una cartella chiamata MyCinema - Gestione Utenti che contiene un'altro progetto per interfacciarsi al database e gestire gli utenti e i permessi a loro assegnati.
Written by xinyimanposted in Lazarus 1.0 Novembre 16, 2011, 08:58:00 am20899 ViewsRating: 0 (0 Rates)Print
Chi necessita di lavorare con la crittografia troverà in Lazarus un valido alleato perchè esiste un componente chiamato DCPCrypt (http://wiki.lazarus.freepascal.org/DCPcrypt) che permette di lavorare con i più diffusi algoritmi di crittografia. Vediamo ora un esempio per capire come si usa.
{procedura che cifra una stringa} procedure TForm1.Button1Click(Sender: TObject); var i: integer; Cipher: TDCP_rc4; KeyStr: string; begin KeyStr:= ''; if InputQuery('Passphrase','Inserisci la passphrase',KeyStr) then // richiedo la passphrase per cifrare la stringa begin Cipher:= TDCP_rc4.Create(Self); Cipher.InitStr(KeyStr,TDCP_sha1); // inizializzare il cifrario con un hash della password Txt_Out.Text := Cipher.EncryptString(Txt_In.Text); //cifro il testo contenuto nella TEdit di nome Txt_In e metto il risultato nella TEdit Txt_Out Lbl_Algoritmo.Caption:= Cipher.GetAlgorithm; //visualizzo quale algoritmo ho usato in una TLabel di nome Lbl_Algoritmo Cipher.Burn; Cipher.Free; end; end;
procedure TForm1.Button2Click(Sender: TObject); var i: integer; Cipher: TDCP_rc4; KeyStr: string; begin KeyStr:= ''; if InputQuery('Passphrase','Inserisci la passphrase',KeyStr) then // richiedo la passphrase per cifrare la stringa begin Cipher:= TDCP_rc4.Create(Self); Cipher.InitStr(KeyStr,TDCP_sha1); // inizializzare il cifrario con un hash della password Txt_Out.Text := Cipher.DecryptString(Txt_In.Text); //decifro il testo contenuto nella TEdit di nome Txt_In e metto il risultato nella TEdit Txt_Out Lbl_Algoritmo.Caption:= Cipher.GetAlgorithm; //visualizzo quale algoritmo ho usato in una label di nome Lbl_Algoritmo Cipher.Burn; Cipher.Free; end; end;
Written by xinyimanposted in Lazarus 1.0 Novembre 14, 2011, 02:36:00 pm22552 ViewsRating: 0 (0 Rates)Print
A volte si necessita di estendere le funzionalità di Lazarus, perchè gli strumenti necessari non sono completi. Facciamo l'esempio di una installazione pulita di Lazarus, in tale installazione non è (di norma) presente il LazReport anche se il pacchetto per installarlo lo avete già tra le cose a vostra disposizione.
Quindi per prima cosa vediamo dove trovare i pacchetti di cui già disponiamo e che vogliamo installare, di norma su windows li troviamo in c:\lazarus\components\ mentre di norma su linux (ubuntu) troviamo tali paccehtti in \usr\lib\lazarus\components
Bene per proseguire con l'esempio che stavamo vedendo apriamo
Lazarus -> Package -> Apri il file del pacchetto (*.lpk)
Compare una schermata che chiede dove andare a prendere il file necessario e noi gli diciamo C:\lazarus\components\lazreport\source\lazreport.lpk
Diamo compila e poi installa, ci chiederà se vogliamo chiudere e riaprire lazarus, voi dite di si e aspettate che abbia finito.
Bene ora vedrete tra le linguette di Lazarus una nuova chiamata lazreport. Questo procedimento è di norma la prassi per installare un nuovo componente su Lazarus, come abbiamo visto una serie di questi componenti li abbiamo già sul nostro pc, altri li dobbiamo scaricare da internet. Qui trovate un resoconto di ciò che potete installare:
Questo blog non rappresenta una testata giornalistica poiché viene
aggiornato senza alcuna periodicità. Non può pertanto considerarsi un
prodotto editoriale ai sensi della legge n. 62/2001.
Questo sito utilizza cookie, anche di terze parti, per offriti servizi in linea con le tue preferenze. Chiudendo questo banner, scorrendo questa pagina, cliccando su un link o proseguendo la navigazione in altra maniera, acconsenti all’uso dei cookie.