Lazarus - vývojové prostředí DELPHI zdarma

K prostředí LAZARUS je možno používat SQLite3 databázi. Má to tu výhodu, že všechno bude v jednom programu a žádný další SQL server se nemusí instalovat. Toto vývojové prostředi (DELPHI) je zcela zdarma a legálně.

Kdysi vynikající vývojové prostředí pro pascal byl turbopascal od firmy Borland. Později vzniklo též velmi dobré vývojové prostředí pro WINDOWS a to DELPHI. Až do verze DELPHI 7 to bylo dobré vývojové prostředí, pod povrchem se skrýval object pascal, někdy se tomu říkalo visual pascal (vizuální pascal). Pak to koupila společnost Microsoft a tím to dopadlo tak, jak se všemi dobrými věcmi, které jmenovaná firma koupila.

Následně ale vzniklo vývojové prostředí LAZARUS, které je téměř úplně stejné jako bylo DELPHI v dobách největší slávy. Nejsou tam zbytečnosti (MS .NET ap.), je to zdarma a legálně. Navíc je to prostředí multiplatformní, běží pod windows i linuxem. Pod povrchem je object pascal (objektový pascal). Navíc si lze zvolit grafickou aplikaci (menu projekt, nový projekt, aplikace) nebo ve starém stylu aplikaci (free) pascal (menu projekt, nový projekt, jednoduchý program).

Zde budu popisovat instalaci a používání pod LUBUNTU 16.04, což je odlehčené prostředí UBUNTU i pro méně výkonná PC.

Instalace LAZARUSu

Lazarus

Instalace vývojového prostředí LAZARUS se provede z balíčkovacího systému (např. synaptic) výběrem balíčku lazarus. Povolí se také všechny závislosti o které si to řekne. Pak se nainstaluje celé vývojové prostředí LAZARUS.

Po spuštění LAZARUSu se objeví formulář form1. Na tento formulář můžeme natahovat myší jednotlivé vizuální komponenty, například tlačítko (Tbutton). Na tlačítko klikneme, v inspektoru objektů nastavíme vlastnost caption na "tlačítko" a pak v menu soubor vše uložíme do samostatného adresáře např. pokus1. Nyní v menu dáme spustit->sestavit. Vytvoří se spustitelný program.

 

Zmenšení spustitelného souboru

Po přeložení je spustitelný soubor o velikosti 22 MB a více. Je to způsobeno ladícími informacemi, které už při finální verzi nejsou potřeba. Změnit se to dá pomocí následujícího postupu:

strip -s můjsoubor
upx --best mujsoubor (je třeba balíček upx nebo upx-ucl)

Příkazem strip dojde ke zmenšení kódu z asi 22 MB na 4,6 MB. Příkazem upx dojde ke kompresi spustitelného souboru na asi 1,45 MB, který se při spuštění rozbalí v paměti.

SQLite3 v LAZARUS

LAZARUS s SQLite3

Pro používání databáze SQLite (SQLite3) je potřeba nainstalovat balíček sqlite a všechny závislosti o které si řekne. Pak balíček sqlitebrowser pro správu sqlite3 databází a tabulek.

Pokud při spouštění lazarus programů je při přístupu k tabulkám hlášena chyba "libsqlite3.so", tak je potřeba ještě doinstalovat balíček libsqlite3-dev.

Nainstaluje se také konzola, její spuštění je terminálovým příkazem (z příkazového řádku) sqlite3:

SQLite version 3.11.0 2016-02-15 17:29:24
Enter ".help" for usage hints.
Connected to a transient in-memory database.
Use ".open FILENAME" to reopen on a persistent database.
sqlite>

Vytvoření databáze:

sqlite3 novadatabaze.db

Otevření databáze .open studenti.db, viz .help.

sqlite> .databases
seq  name             file                                                     
---  ---------------  ----------------------------------------------------------
0    main             /home/uzivatel/aplikace/lazarus/sql3-dalsi2/adresy.db    

sqlite> .tables
Class           Student         StudentSubject  Subject         lidi         

sqlite> select * from students;
Error: no such table: students

sqlite> select * from student;
StudentID|First|Second|Form
1|Petr|Bilavec|13Sc
2|William|Shakespeare|13Pl
3|Elizabeta|Krkonová|13Pl
4|René|Dobík|13Sp

Vytváření tabulek v SQLite3

Je třeba se v konzoli přihlásit (sqlite3), připojit se k databázi (.open soubor).

CREATE TABLE Studenti
(
StudentID INTEGER PRIMARY KEY AUTOINCREMENT,
tridaID integer KEY,
jmeno VARCHAR(15),
prijmeni VARCHAR(15),
prum_znamky float
);

INSERT INTO Studenti(tridaID,jmeno,prijmeni,prum_znamky) VALUES (1,'David','Beker',2.3);
INSERT INTO Studenti(tridaID,jmeno,prijmeni,prum_znamky) VALUES (1,'Tomáš','Novák',2.1);
INSERT INTO Studenti(tridaID,jmeno,prijmeni,prum_znamky) VALUES (2,'Jiří','Maník',1.3);
INSERT INTO Studenti(tridaID,jmeno,prijmeni,prum_znamky) VALUES (2,'Petr','Opatrný',2.2);

CREATE TABLE tridy
(
TridaID INTEGER PRIMARY KEY NOT NULL,
nazev VARCHAR(15), tridni VARCHAR(15),
predseda VARCHAR(15)
);

INSERT INTO tridy(TridaID,nazev,tridni,predseda) VALUES (1,'1.A','Struhárová','Malaník');
INSERT INTO tridy(TridaID,nazev,tridni,predseda) VALUES (2,'1.B','Chtobotová','Novák');

Pak máme nějaká data v tabulkách a lze spustit SQL příkazy. Ještě zapneme zobrazování hlaviček (headers):

sqlite> .headers on

sqlite> select * from tridy;
TridaID|nazev|tridni|predseda
1|1.A|Struhárová|Malaník
2|1.B|Chtobotová|Novák

sqlite> select * from studenti;
StudentID|tridaID|jmeno|prijmeni|prum_znamky
1|1|David|Beker|2.3
2|1|Tomáš|Novák|2.1
3|2|Jiří|Maník|1.3
4|2|Petr|Opatrný|2.2

sqlite> select * from tridy natural join studenti where TridaID=2;TridaID|nazev|tridni|predseda|StudentID|jmeno|prijmeni|prum_znamky
2|1.B|Chtobotová|Novák|3|Jiří|Maník|1.3
2|1.B|Chtobotová|Novák|4|Petr|Opatrný|2.2

Zdrojový kód v LAZARUS

unit frmMain;

{$mode objfpc}{$H+}

interface

uses
Classes, SysUtils, sqlite3conn, sqldb, DB, FileUtil, Forms, Controls,
Graphics, Dialogs, DBGrids, StdCtrls;

type

{ TMainForm }

TMainForm = class(TForm)
btnCreateTable: TButton;
btnReadData: TButton;
btnInsertRecord: TButton;
conDatabase: TSQLite3Connection;
dsGet: TDatasource;
DBGrid1: TDBGrid;
qrSend: TSQLQuery;
qrGet: TSQLQuery;
trnDatabase: TSQLTransaction;
procedure btnCreateTableClick(Sender: TObject);
procedure btnReadDataClick(Sender: TObject);
procedure btnInsertRecordClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ private declarations }
public
{ public declarations }
end;

var
MainForm: TMainForm;

implementation

{$R *.lfm}

{ TMainForm }

procedure TMainForm.btnCreateTableClick(Sender: TObject);
begin
try
if not conDatabase.Connected then
conDatabase.Connected := True;

qrSend.SQL.Clear;
qrSend.SQL.Add(
'create table if not exists test (id integer primary key, name varchar(20))');
qrSend.ExecSQL;

trnDatabase.CommitRetaining;
except
trnDatabase.Rollback;
end;

end;

procedure TMainForm.btnReadDataClick(Sender: TObject);
begin
try
if qrGet.Active then
qrGet.Close;

qrGet.SQL.Clear;
qrGet.SQL.Add('Select * from test order by id');
qrGet.Open;

except

end;
end;

procedure TMainForm.btnInsertRecordClick(Sender: TObject);
begin
try
if qrSend.Active then
qrSend.Close;

qrSend.SQL.Clear;
qrSend.SQL.Add('insert into test (id, name) values (1, ''Petr'')');
qrSend.ExecSQL;

trnDatabase.CommitRetaining;
except
on E:Exception do
begin
MessageDlg('Chyba',Format('Data nelze vložit! %s',[#13#10 + E.Message]), mtError, [mbOK],0);
trnDatabase.Rollback;
end;
end;
end;

procedure TMainForm.FormCreate(Sender: TObject);
begin
//naledujici kroky lze naklikat na formu, zde je to jen pro ukazku
//nastavim jmeno databaze (vcetne cesty, ja mam db u exe, tak staci jen nazev souboru)
conDatabase.DatabaseName:= 'data.db';
//propojim komponnetu transakce s komponentou pripojeni
conDatabase.Transaction := trnDatabase;
//propojim komponenty dotazu (query) s pripojenim
qrGet.DataBase := conDatabase;
qrSend.DataBase := conDatabase;
//propojim komponentu datasource s dotazem
dsGet.dataset := qrGet;
//propojim DBgrid s datasource
DBGrid1.DataSource := dsGet;
end;

end.

Odkazy:

  1. http://www.alevel-computing.x10.mx/TutorialLazarusSQLite.php
  2. http://programujte.com/forum/vlakno/24656-lazarus-sqlite/

SSL pro weby od 11/2015 zdarma


MS WINDOWS 10 - sběr informací o uživateli


DEBIAN 8 Jessi - OS zdarma debian vyšel 25.4.2015

Jessie

debian 8 - stáhnout


Zranitelnost „ROM-0“ routerů


Předali data tajným službám
Americké bezpečnostní agentuře (NSA) předali data Microsoft, Yahoo, Google, Facebook...


Itálie preferuje open source
Italský parlament schválil zákon, který nařizuje státním institucím pořizovat otevřený software před komerčním. To znamená LINUX místo MS-WINDOWS, LIBRE OFFICE místo MS OFFICE atd.

08.04. 2017 20:14:48
  • Redakční systém MRS
  • 10 nečastějších zranitelností WEBU
  • Esperantoesperanto - univerzální mezinárodní jazyk
  • SMS zdarma - posílání SMS zdarma
  • proč LINUX
  • základy LINUXU
  • Software na úřadech - jeho otevřené alternativy
  • Řekněte sbohem Microsoftu
  • Rychlost připojení - změřte si svoji rychlost
  • SEO servis
  • Jak psát web
  • Zákony - občanský, autorský, obchodní zákoník atd.
  • Infosoud - nalezení stání a průběhu jednání
  • ARES - registr ekonomických subjektů
  • Katastr nemovitostí
  • Broďan - brodské nezávislé zpravodajství
01.09. 2016 10:53:48
103250
Květná 1843, Uherský Brod  přihlásit poslední změna: 10.01. 2017 16:10:50