Delphi example added
This commit is contained in:
141
Examples/Delphi/Delphi.dof
Normal file
141
Examples/Delphi/Delphi.dof
Normal file
@@ -0,0 +1,141 @@
|
||||
[FileVersion]
|
||||
Version=7.0
|
||||
[Compiler]
|
||||
A=8
|
||||
B=0
|
||||
C=1
|
||||
D=1
|
||||
E=0
|
||||
F=0
|
||||
G=1
|
||||
H=1
|
||||
I=1
|
||||
J=0
|
||||
K=0
|
||||
L=1
|
||||
M=0
|
||||
N=1
|
||||
O=1
|
||||
P=1
|
||||
Q=0
|
||||
R=0
|
||||
S=0
|
||||
T=0
|
||||
U=0
|
||||
V=1
|
||||
W=0
|
||||
X=1
|
||||
Y=1
|
||||
Z=1
|
||||
ShowHints=1
|
||||
ShowWarnings=1
|
||||
UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;
|
||||
NamespacePrefix=
|
||||
SymbolDeprecated=1
|
||||
SymbolLibrary=1
|
||||
SymbolPlatform=1
|
||||
UnitLibrary=1
|
||||
UnitPlatform=1
|
||||
UnitDeprecated=1
|
||||
HResultCompat=1
|
||||
HidingMember=1
|
||||
HiddenVirtual=1
|
||||
Garbage=1
|
||||
BoundsError=1
|
||||
ZeroNilCompat=1
|
||||
StringConstTruncated=1
|
||||
ForLoopVarVarPar=1
|
||||
TypedConstVarPar=1
|
||||
AsgToTypedConst=1
|
||||
CaseLabelRange=1
|
||||
ForVariable=1
|
||||
ConstructingAbstract=1
|
||||
ComparisonFalse=1
|
||||
ComparisonTrue=1
|
||||
ComparingSignedUnsigned=1
|
||||
CombiningSignedUnsigned=1
|
||||
UnsupportedConstruct=1
|
||||
FileOpen=1
|
||||
FileOpenUnitSrc=1
|
||||
BadGlobalSymbol=1
|
||||
DuplicateConstructorDestructor=1
|
||||
InvalidDirective=1
|
||||
PackageNoLink=1
|
||||
PackageThreadVar=1
|
||||
ImplicitImport=1
|
||||
HPPEMITIgnored=1
|
||||
NoRetVal=1
|
||||
UseBeforeDef=1
|
||||
ForLoopVarUndef=1
|
||||
UnitNameMismatch=1
|
||||
NoCFGFileFound=1
|
||||
MessageDirective=1
|
||||
ImplicitVariants=1
|
||||
UnicodeToLocale=1
|
||||
LocaleToUnicode=1
|
||||
ImagebaseMultiple=1
|
||||
SuspiciousTypecast=1
|
||||
PrivatePropAccessor=1
|
||||
UnsafeType=0
|
||||
UnsafeCode=0
|
||||
UnsafeCast=0
|
||||
[Linker]
|
||||
MapFile=0
|
||||
OutputObjs=0
|
||||
ConsoleApp=1
|
||||
DebugInfo=0
|
||||
RemoteSymbols=0
|
||||
MinStackSize=16384
|
||||
MaxStackSize=1048576
|
||||
ImageBase=4194304
|
||||
ExeDescription=
|
||||
[Directories]
|
||||
OutputDir=..\Bin\
|
||||
UnitOutputDir=
|
||||
PackageDLLOutputDir=
|
||||
PackageDCPOutputDir=
|
||||
SearchPath=..\..\Source\
|
||||
Packages=vcl;rtl;vclx;VclSmp;vclshlctrls
|
||||
Conditionals=
|
||||
DebugSourceDirs=
|
||||
UsePackages=0
|
||||
[Parameters]
|
||||
RunParams=
|
||||
HostApplication=
|
||||
Launcher=
|
||||
UseLauncher=0
|
||||
DebugCWD=
|
||||
[Version Info]
|
||||
IncludeVerInfo=0
|
||||
AutoIncBuild=0
|
||||
MajorVer=1
|
||||
MinorVer=0
|
||||
Release=0
|
||||
Build=0
|
||||
Debug=0
|
||||
PreRelease=0
|
||||
Special=0
|
||||
Private=0
|
||||
DLL=0
|
||||
Locale=1049
|
||||
CodePage=1251
|
||||
[Version Info Keys]
|
||||
CompanyName=
|
||||
FileDescription=
|
||||
FileVersion=1.0.0.0
|
||||
InternalName=
|
||||
LegalCopyright=
|
||||
LegalTrademarks=
|
||||
OriginalFilename=
|
||||
ProductName=
|
||||
ProductVersion=1.0.0.0
|
||||
Comments=
|
||||
[HistoryLists\hlUnitAliases]
|
||||
Count=1
|
||||
Item0=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;
|
||||
[HistoryLists\hlSearchPath]
|
||||
Count=1
|
||||
Item0=..\..\Source\
|
||||
[HistoryLists\hlOutputDirectorry]
|
||||
Count=1
|
||||
Item0=..\Bin\
|
||||
13
Examples/Delphi/Delphi.dpr
Normal file
13
Examples/Delphi/Delphi.dpr
Normal file
@@ -0,0 +1,13 @@
|
||||
program Delphi;
|
||||
|
||||
uses
|
||||
Forms,
|
||||
Main in 'Main.pas' {Form_Main};
|
||||
|
||||
{$R *.res}
|
||||
|
||||
begin
|
||||
Application.Initialize;
|
||||
Application.CreateForm(TForm_Main, Form_Main);
|
||||
Application.Run;
|
||||
end.
|
||||
61
Examples/Delphi/Main.dfm
Normal file
61
Examples/Delphi/Main.dfm
Normal file
@@ -0,0 +1,61 @@
|
||||
object Form_Main: TForm_Main
|
||||
Left = 421
|
||||
Top = 198
|
||||
Width = 673
|
||||
Height = 434
|
||||
Caption = 'Delphi SQLite Example'
|
||||
Color = clBtnFace
|
||||
Font.Charset = DEFAULT_CHARSET
|
||||
Font.Color = clWindowText
|
||||
Font.Height = -11
|
||||
Font.Name = 'MS Sans Serif'
|
||||
Font.Style = []
|
||||
OldCreateOrder = False
|
||||
Position = poScreenCenter
|
||||
PixelsPerInch = 96
|
||||
TextHeight = 13
|
||||
object Panel_Actions: TPanel
|
||||
Left = 0
|
||||
Top = 0
|
||||
Width = 154
|
||||
Height = 396
|
||||
Align = alLeft
|
||||
BevelOuter = bvNone
|
||||
TabOrder = 0
|
||||
object Button_DB_Read: TButton
|
||||
Left = 8
|
||||
Top = 48
|
||||
Width = 136
|
||||
Height = 33
|
||||
Caption = 'Read Database'
|
||||
TabOrder = 1
|
||||
OnClick = Button_DB_ReadClick
|
||||
end
|
||||
object Button_DB_Create: TButton
|
||||
Left = 8
|
||||
Top = 8
|
||||
Width = 136
|
||||
Height = 33
|
||||
Caption = 'Create Database'
|
||||
TabOrder = 0
|
||||
OnClick = Button_DB_CreateClick
|
||||
end
|
||||
end
|
||||
object Memo_Result: TMemo
|
||||
Left = 154
|
||||
Top = 0
|
||||
Width = 503
|
||||
Height = 396
|
||||
Align = alClient
|
||||
BorderStyle = bsNone
|
||||
Color = 4207920
|
||||
Font.Charset = DEFAULT_CHARSET
|
||||
Font.Color = 16773344
|
||||
Font.Height = -11
|
||||
Font.Name = 'MS Sans Serif'
|
||||
Font.Style = []
|
||||
ParentFont = False
|
||||
ScrollBars = ssVertical
|
||||
TabOrder = 1
|
||||
end
|
||||
end
|
||||
217
Examples/Delphi/Main.pas
Normal file
217
Examples/Delphi/Main.pas
Normal file
@@ -0,0 +1,217 @@
|
||||
unit Main;
|
||||
|
||||
interface
|
||||
|
||||
uses
|
||||
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
|
||||
Dialogs, StdCtrls, ExtCtrls;
|
||||
|
||||
type
|
||||
TForm_Main = class(TForm)
|
||||
Panel_Actions: TPanel;
|
||||
Memo_Result: TMemo;
|
||||
Button_DB_Create: TButton;
|
||||
Button_DB_Read: TButton;
|
||||
procedure Button_DB_CreateClick(Sender: TObject);
|
||||
procedure Button_DB_ReadClick(Sender: TObject);
|
||||
end;
|
||||
|
||||
var
|
||||
Form_Main: TForm_Main;
|
||||
|
||||
implementation
|
||||
|
||||
uses
|
||||
SQLite3, SQLite3Wrap;
|
||||
|
||||
{$R *.dfm}
|
||||
|
||||
procedure TForm_Main.Button_DB_CreateClick(Sender: TObject);
|
||||
var
|
||||
DB: TSQLite3Database;
|
||||
Stmt: TSQLite3Statement;
|
||||
IDs: array[1..6] of Integer;
|
||||
begin
|
||||
// Delete database if it already exists
|
||||
DeleteFile('artists.db');
|
||||
|
||||
// Create datatbase and fill it with example data
|
||||
DB := TSQLite3Database.Create;
|
||||
try
|
||||
DB.Open('artists.db');
|
||||
|
||||
// Create table "artists"
|
||||
DB.Execute('CREATE TABLE artists (name TEXT, born REAL, died REAL)');
|
||||
|
||||
// Fill the table with artists
|
||||
Stmt := DB.Prepare('INSERT INTO artists (name, born, died) VALUES (?, ?, ?)');
|
||||
try
|
||||
Stmt.BindText (1, 'Leonardo da Vinci');
|
||||
Stmt.BindDouble(2, EncodeDate(1452, 4, 15));
|
||||
Stmt.BindDouble(3, EncodeDate(1519, 5, 2));
|
||||
|
||||
Stmt.StepAndReset; // StepAndReset executes a prepared statement
|
||||
// and resets it so we can reuse it again
|
||||
|
||||
IDs[1] := DB.LastInsertRowID; // Save newly added artist's ID to use it
|
||||
// when filling "paintings" table below
|
||||
|
||||
Stmt.BindText (1, 'Raphael');
|
||||
Stmt.BindDouble(2, EncodeDate(1483, 3, 28));
|
||||
Stmt.BindDouble(3, EncodeDate(1520, 4, 6));
|
||||
Stmt.StepAndReset;
|
||||
IDs[2] := DB.LastInsertRowID;
|
||||
|
||||
Stmt.BindText (1, 'Arkhip Kuindzhi');
|
||||
Stmt.BindDouble(2, EncodeDate(1842, 1, 27));
|
||||
Stmt.BindDouble(3, EncodeDate(1898, 7, 24));
|
||||
Stmt.StepAndReset;
|
||||
IDs[3] := DB.LastInsertRowID;
|
||||
|
||||
Stmt.BindText (1, 'Nicholas Roerich');
|
||||
Stmt.BindDouble(2, EncodeDate(1874, 10, 9));
|
||||
Stmt.BindDouble(3, EncodeDate(1947, 12, 13));
|
||||
Stmt.StepAndReset;
|
||||
IDs[4] := DB.LastInsertRowID;
|
||||
|
||||
Stmt.BindText (1, 'Ivan Aivazovsky');
|
||||
Stmt.BindDouble(2, EncodeDate(1817, 7, 29));
|
||||
Stmt.BindDouble(3, EncodeDate(1900, 5, 5));
|
||||
Stmt.StepAndReset;
|
||||
IDs[5] := DB.LastInsertRowID;
|
||||
|
||||
Stmt.BindText (1, 'Ivan Shishkin');
|
||||
Stmt.BindDouble(2, EncodeDate(1832, 1, 25));
|
||||
Stmt.BindDouble(3, EncodeDate(1898, 3, 20));
|
||||
Stmt.StepAndReset;
|
||||
IDs[6] := DB.LastInsertRowID;
|
||||
finally
|
||||
Stmt.Free;
|
||||
end;
|
||||
|
||||
// Create table "paintings"
|
||||
DB.Execute('CREATE TABLE paintings (title TEXT, year INTEGER, artist INTEGER)');
|
||||
|
||||
// Fill the table with paintings info
|
||||
Stmt := DB.Prepare('INSERT INTO paintings (title, year, artist) VALUES (?, ?, ?)');
|
||||
try
|
||||
// Leonardo da Vinci
|
||||
Stmt.BindText(1, 'The Virgin and Child with St. Anne');
|
||||
Stmt.BindInt (2, 1508);
|
||||
Stmt.BindInt (3, IDs[1]);
|
||||
Stmt.StepAndReset;
|
||||
|
||||
Stmt.BindText(1, 'Mona Lisa');
|
||||
Stmt.BindInt (2, 1519);
|
||||
Stmt.BindInt (3, IDs[1]);
|
||||
Stmt.StepAndReset;
|
||||
|
||||
// Raphael
|
||||
Stmt.BindText(1, 'Sistine Madonna');
|
||||
Stmt.BindInt (2, 1514);
|
||||
Stmt.BindInt (3, IDs[2]);
|
||||
Stmt.StepAndReset;
|
||||
|
||||
Stmt.BindText(1, 'Transfiguration');
|
||||
Stmt.BindInt (2, 1520);
|
||||
Stmt.BindInt (3, IDs[2]);
|
||||
Stmt.StepAndReset;
|
||||
|
||||
// Arkhip Kuindzhi
|
||||
Stmt.BindText(1, 'After a rain');
|
||||
Stmt.BindInt (2, 1879);
|
||||
Stmt.BindInt (3, IDs[3]);
|
||||
Stmt.StepAndReset;
|
||||
|
||||
Stmt.BindText(1, 'Elbrus');
|
||||
Stmt.BindInt (2, 1895);
|
||||
Stmt.BindInt (3, IDs[3]);
|
||||
Stmt.StepAndReset;
|
||||
|
||||
// Nicholas Roerich
|
||||
Stmt.BindText(1, 'To Kailas. Lahul');
|
||||
Stmt.BindInt (2, 1932);
|
||||
Stmt.BindInt (3, IDs[4]);
|
||||
Stmt.StepAndReset;
|
||||
|
||||
Stmt.BindText(1, 'Krishna');
|
||||
Stmt.BindInt (2, 1929);
|
||||
Stmt.BindInt (3, IDs[4]);
|
||||
Stmt.StepAndReset;
|
||||
|
||||
// Ivan Aivazovsky
|
||||
Stmt.BindText(1, 'The Mary Caught in a Storm');
|
||||
Stmt.BindInt (2, 1892);
|
||||
Stmt.BindInt (3, IDs[5]);
|
||||
Stmt.StepAndReset;
|
||||
|
||||
Stmt.BindText(1, 'Brig "Mercury" Attacked by Two Turkish Ships');
|
||||
Stmt.BindInt (2, 1892);
|
||||
Stmt.BindInt (3, IDs[5]);
|
||||
Stmt.StepAndReset;
|
||||
|
||||
// Ivan Shishkin
|
||||
Stmt.BindText(1, 'Morning in a Pine Forest');
|
||||
Stmt.BindInt (2, 1889);
|
||||
Stmt.BindInt (3, IDs[6]);
|
||||
Stmt.StepAndReset;
|
||||
|
||||
Stmt.BindText(1, 'Wood Distances');
|
||||
Stmt.BindInt (2, 1884);
|
||||
Stmt.BindInt (3, IDs[6]);
|
||||
Stmt.StepAndReset;
|
||||
finally
|
||||
Stmt.Free;
|
||||
end;
|
||||
finally
|
||||
DB.Free;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TForm_Main.Button_DB_ReadClick(Sender: TObject);
|
||||
var
|
||||
DB: TSQLite3Database;
|
||||
Stmt_Artists,
|
||||
Stmt_Paintings: TSQLite3Statement;
|
||||
begin
|
||||
if not FileExists('artists.db') then
|
||||
begin
|
||||
ShowMessage('The database does not exist. Please create one.');
|
||||
Exit;
|
||||
end;
|
||||
|
||||
DB := TSQLite3Database.Create;
|
||||
try
|
||||
DB.Open('artists.db');
|
||||
|
||||
// Show all artists and their paintings
|
||||
Stmt_Artists := DB.Prepare('SELECT rowid, name, born, died FROM artists ORDER BY born');
|
||||
Stmt_Paintings := DB.Prepare('SELECT title, year FROM paintings WHERE artist = ? ORDER BY year');
|
||||
try
|
||||
while Stmt_Artists.Step = SQLITE_ROW do
|
||||
begin
|
||||
Memo_Result.Lines.Add(Stmt_Artists.ColumnText(1));
|
||||
Memo_Result.Lines.Add(DateToStr(Stmt_Artists.ColumnDouble(2)) + ' - ' + DateToStr(Stmt_Artists.ColumnDouble(3)));
|
||||
|
||||
Memo_Result.Lines.Add('paintings:');
|
||||
Stmt_Paintings.BindInt(1, Stmt_Artists.ColumnInt(0));
|
||||
while Stmt_Paintings.Step = SQLITE_ROW do
|
||||
Memo_Result.Lines.Add(' ' + Stmt_Paintings.ColumnText(0) + ' (' + Stmt_Paintings.ColumnText(1) + ')');
|
||||
Stmt_Paintings.Reset;
|
||||
|
||||
Memo_Result.Lines.Add('');
|
||||
end;
|
||||
finally
|
||||
Stmt_Paintings.Free;
|
||||
Stmt_Artists.Free;
|
||||
end;
|
||||
finally
|
||||
DB.Free;
|
||||
end;
|
||||
|
||||
// Add separator
|
||||
Memo_Result.Lines.Add('------------------------------------------------');
|
||||
Memo_Result.Lines.Add('');
|
||||
end;
|
||||
|
||||
end.
|
||||
Reference in New Issue
Block a user