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). Zde je namístě malá poznámka: SQLite obsahuje emulátor SQL standardu, tedy zadávání příkazů stejně jako v MySQL nebo MariaDB bude fungovat. Například i SQL dotaz:
select * from tridy natural join studenti where TridaID=2; projde bez problémů.

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

{$mode objfpc}{$H+}

interface

uses
Classes, SysUtils, db, sqlite3conn, sqldb, FileUtil, Forms, Controls,
Graphics, Dialogs, ComCtrls, DBGrids, Menus;

type

{ TForm1 }

TForm1 = class(TForm)
DataSource1: TDataSource;
DBGrid1: TDBGrid;
SQLite3Connection1: TSQLite3Connection;
SQLQuery1: TSQLQuery;
SQLTransaction1: TSQLTransaction;
StatusBar1: TStatusBar;
procedure FormActivate(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ private declarations }
public
{ public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.lfm}

{ TForm1 }

procedure TForm1.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)
SQLite3Connection1.DatabaseName:= 'studenti.db';
//propojim komponnetu transakce s komponentou pripojeni
SQLite3Connection1.Transaction := SQLTransaction1;
//propojim komponenty dotazu (query) s pripojenim
SQLQuery1.DataBase := SQLite3Connection1;
//propojim komponentu datasource s dotazem
DataSource1.dataset := SQLQuery1;
//propojim DBgrid s datasource
DBGrid1.DataSource := DataSource1;
end;

procedure TForm1.FormActivate(Sender: TObject);
begin
try
if SQLQuery1.Active then
SQLQuery1.Close;
SQLQuery1.SQL.Clear;
SQLQuery1.SQL.Add('Select * from studenti');
SQLQuery1.Open;
except
On E :Exception do begin
MessageDlg('Chyba', E.Message, mtConfirmation,[mbYes],0);
end;
end;
end;

end.

MariaDB v LAZARUS

Je třeba doinstalovat balíček libmysqlclient-dev.
Do procedury FormCreate smazat řádky s conDatabase a doplnit následující:

MySQL56Connection1.DatabaseName := 'redsystem';
MySQL56Connection1.HostName := 'localhost';
MySQL56Connection1.UserName := 'redsystem';
MySQL56Connection1.Password := 'mojeheslo';

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 9 Stretch - OS zdarma debian vyšel 17.6.2017

debian 9

debian 9 - stáhnout pro PC


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.

01.07. 2017 19:50:10
  • 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
105068
Květná 1843, Uherský Brod  přihlásit poslední změna: 07.08. 2017 09:57:58