* * * *

Privacy Policy

Blog italiano

Clicca qui se vuoi andare al blog italiano su Lazarus e il pascal.

Forum ufficiale

Se non siete riusciti a reperire l'informazione che cercavate nei nostri articoli o sul nostro forum vi consiglio di visitare il
Forum ufficiale di Lazarus in lingua inglese.

Lazarus 1.0

Trascinare un file nel programma
DB concetti fondamentali e ZeosLib
Recuperare codice HTML da pagina web
Mandare mail con Lazarus
Stabilire il sistema operativo
Esempio lista in pascal
File INI
Codice di attivazione
Realizzare programmi multilingua
Lavorare con le directory
Utilizzare Unità esterne
TTreeView
TTreeview e Menu
Generare controlli RUN-TIME
LazReport, PDF ed immagini
Intercettare tasti premuti
Ampliare Lazarus
Lazarus e la crittografia
System Tray con Lazarus
UIB: Unified Interbase
Il file: questo sconosciuto
Conferma di chiusura di un applicazione
Liste e puntatori
Overload di funzioni
Funzioni a parametri variabili
Proprietà
Conversione numerica
TImage su Form e Panel
Indy gestiore server FTP lato Client
PopUpMenu sotto Pulsante (TSpeedButton)
Direttiva $macro
Toolbar
Evidenziare voci TreeView
Visualizzare un file Html esterno
StatusBar - aggirare l'errore variabile duplicata
Da DataSource a Excel
Le permutazioni
Brute force
Indy 10 - Invio email con allegati
La gestione degli errori in Lazarus
Pascal Script
Linux + Zeos + Firebird
Dataset virtuale
Overload di operatori
Lavorare con file in formato JSON con Lazarus
Zeos ... dietro le quinte (prima parte)
Disporre le finestre in un blocco unico (come Delphi)
Aspetto retrò (Cmd Line)
Lazarus 1.0
Come interfacciare periferica twain
Ubuntu - aggiornare free pascal e lazarus
fpcup: installazioni parallele di lazarus e fpc
Free Pascal e Lazarus sul Raspberry Pi
Cifratura: breve guida all'uso dell'algoritmo BlowFish con lazarus e free pascal.
Creare un server multithread
guida all'installazione di fpc trunk da subversion in linux gentoo
Indice
DB concetti fondamentali e connessioni standard
Advanced Record Syntax
DB concetti fondamentali e DBGrid
DB concetti fondamentali e TDBEdit, TDBMemo e TDBText
Advanced Record Syntax: un esempio pratico
Superclasse form base per programmi gestionali (e non)
Superclasse form base per programmi gestionali (e non) #2 - log, exception call stack, application toolbox
Superclasse form base per programmi gestionali (e non) #3 - traduzione delle form
Superclasse form base per programmi gestionali (e non) #4 - wait animation
Un dialog per la connessione al database:TfmSimpleDbConnectionDialog
Installare lazarus su mac osx sierra
immagine docker per lavorare con lazarus e free pascal
TDD o Test-Driven Development
Benvenuto! Effettua l'accesso oppure registrati.
Novembre 22, 2024, 06:31:25 am

Inserisci il nome utente, la password e la durata della sessione.

83 Visitatori, 0 Utenti
Pagine: 1 ... 19 20 [21] 22 23 ... 29
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.

Codice: [Seleziona]

unit Unit1;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ExtCtrls,
  StdCtrls,
  Windows;

type

  { TForm1 }

  TForm1 = class(TForm)
    Memo1: TMemo;
    Timer1: TTimer;
    procedure FormCreate(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
  private
    { private declarations }
  public
    { public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.lfm}

{ TForm1 }

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:

www.lazaruspascal.it/esempi/keylog.zip

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.
Share on Twitter! Digg this story! Del.icio.us Share on Facebook! Technorati Reddit StumbleUpon
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.









Share on Twitter! Digg this story! Del.icio.us Share on Facebook! Technorati Reddit StumbleUpon

16 Nov 2011 - MyCinema

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.

Per recuperare le TDBSimpleComponents usare il seguente link: http://www.liuheschool.com/informatica/Lazarus/TDSimpleComponents/TDBSimpleComponents.zip

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 .

Analizziamo un attimo il file configurazioni.xml


Codice: [Seleziona]


< ?xml version="1.0" encoding="UTF-8"? >
< impostazioni >  
   < host >127.0.0.1< /host >
   < pathdb >c:\firebird-db\< /pathdb >
   < db >DB_MyCinema.FDB< /db >
   < username >ByyrlKIB< /username >
   < password >GTSrhKUS12Y8< /password >  
   < modalita >2< /modalita >
< /impostazioni >


 

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.

Il progetto lo potete scaricare da qui: http://www.lazaruspascal.it/progetti/MyCinema/MyCinema.zip

Chiunque fosse intenzionato a modificarlo o a terminarlo mi avverta che ci aiutiamo a vicenda.

PS: per chi usa versioni differenti dalla 2.1 di firebird allego il backup del database http://www.lazaruspascal.it/progetti/MyCinema/DB_MyCinema.zip
Share on Twitter! Digg this story! Del.icio.us Share on Facebook! Technorati Reddit StumbleUpon
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.

Codice: [Seleziona]

unit Unit1;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls,
  DCPdes, DCPrc4, DCPsha1;

type

  { TForm1 }

  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    DCP_rc4_1: TDCP_rc4;
    DCP_sha1_1: TDCP_sha1;
    Label1: TLabel;
    Label2: TLabel;
    Lbl_Algoritmo: TLabel;
    Txt_In: TEdit;
    Txt_Out: TEdit;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { private declarations }
  public
    { public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.lfm}

{ TForm1 }

{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;

end.


Potete trovare l'esempio appena visto all'indirizzo: www.lazaruspascal.it/esempi/Cifratore.zip
Share on Twitter! Digg this story! Del.icio.us Share on Facebook! Technorati Reddit StumbleUpon

14 Nov 2011 - Ampliare Lazarus

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:


http://wiki.lazarus.freepascal.org/Components_and_Code_examples




Share on Twitter! Digg this story! Del.icio.us Share on Facebook! Technorati Reddit StumbleUpon
Pagine: 1 ... 19 20 [21] 22 23 ... 29

Recenti

How To

Utenti
  • Utenti in totale: 803
  • Latest: maXim.FI
Stats
  • Post in totale: 19169
  • Topic in totale: 2286
  • Online Today: 99
  • Online Ever: 900
  • (Gennaio 21, 2020, 08:17:49 pm)
Utenti Online
Users: 0
Guests: 83
Total: 83

Disclaimer:

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.