Databáze s textovými soubory 2

Doplněk k minulé hodině - regulární výrazy

c) XML - Extensible Markup Language (rozšiřitelný značkovací jazyk)

<root>
  <objekt>
    <vlastnost1>.....</vlastnost1>
    <vlastnost2>.....</vlastnost2>
  </objekt>
  <objekt>
    <vlastnost1>.....</vlastnost1>
    <vlastnost2>.....</vlastnost2>
  </objekt>
</root>
1 Otevřte ve www prohlížeči dokument cd_catalog.xml a vyzkoušejte sbalování položek www
2 Otevřte v PSPadu soubor cd_catalog.xml a simulujte syntaktickou chybu (změňte některou značku), pak soubor uložte PSPad
3 Aktualizujte ve www prohlížeči dokument cd_catalog.xml a všimněte si hlášení o chybě www
4 Vytvořte v PSPadu nový dokument c:\temp\osoby\osoby.xml (Soubor - Nový - Podle šablony - XML default) s databází nejméně 3 osob - použijte vlastnosti jmeno, prijmeni, automobil, skupina (ve značkách nepoužívejte diakritiku, kódování bude "windows-1250") PSPad
5 Otevřte osoby.xml v Excelu a seřaďte řádky abecedně podle příjmení Excel
6 Uložte tabulku jako soubor c:\temp\osoby\osoby.csv (textový soubor s oddělovačem)
7 Otevřte textový soubor osoby.csv v PSPadu, změňte kódování na UTF-8 a uložte pod jménem c:\temp\osoby\osobyutf8.csv (ověřte si správnost v hexadecimálním zobrazení - úvodní sekvence FFFE) PSPad

Programování textových databází

8 V nové aplikaci IDE Lazarus vložte do formuláře Form1 prvky
  • Edit (Text=Zadej text),
  • CheckBox,
  • RadioGroup (Items červená, zelená, modrá; ItemIndex=0),
  • SpinEdit (rozsah 1-1000, aktuální hodnota=1) - záložka Misc
Lazarus
9 Uložte projekt jako c:\temp\osoby\aplikace.lpi (uložte i unit1.pas), spusťte aplikaci (F9)

Využití XML souboru pro uložení parametrů aplikace

10 Drop a Misc/TXMLPropStorage component on form Lazarus
11 Go to Object Inspector and open editor window for the SessionProperties property of Form1. Add here properties of form and/or controls to be stored inside xml -  Form1.Left; Form1.Top; Form1.Width; Form1.Height; SpinEdit1.Value; Edit1.Text
12 Spusťte opakovaně aplikaci (F9) a měňte pozici okna a hodnoty SpinEdit1 a Edit1 - ověřte ukládání aktuálních hodnot
13 Po ukončení aplikace si prohlédněte obsah nově vytvořeného souboru c:\temp\osoby\aplikace.xml PSPad

Prvky textové databáze ve formuláři

14 Vložte do Form1 komponentu TSdfDataset (záložka Data Access) Lazarus
15 Nastavte properties:
  • SdfDataset1.Filename = c:\temp\osoby\osobyutf8.csv
  • SdfDataset1.Delimiter = ;
  • SdfDataset1.FirstLineAsSchema = true
16 Zkuste aktivovat databázi pomocí SdfDataset.Active = true (nesmí se objevit chyba)
17 Vložte do Form1 komponentu TDataSource (záložka Data Access)
18 Nastavte properties: DataSource1.Dataset := SdfDataset1
19 Vložte do Form1 komponenty TDbGrid a TDbNavigator (záložka Data Controls) a napojte je v properties na DataSource:=DataSource1
Pozn. Sloupce v DbGrid lze nadefinovat pravým tlačítkem a Editovat sloupce...
20 Spusťte aplikaci, upravte si šířku sloupců a prověřte funkčnost procházení databáze
21 Přidejte do databáze 2 nové řádky s vymyšlenými údaji
22 Ukončete aplikaci a vraťte se do IDE Lazarus. Ověřte přidané řádky v souboru osobyutf8.csv

Programování

23 Přidejte do Form1 spouštěcí button s caption=Start Lazarus
24 Pro tento Button1 naprogramujte událost OnClick (dvojklikem na buttonu) - použijte kód ze souboru browsedb.txt
25 Vložte do procedury příkaz pro zobrazení zprávy s příjmením osoby u aktuálně procházeného řádku (za "// udelej neco u radku"): ShowMessage(SdfDataSet1.Fields[0].Value);
26 Zkompilujte a spusťte aplikaci, ověřte funkčnost
27 Ukončete aplikaci aplikace.exe a vraťte se do IDE Lazarus
28 Vložte do formuláře prvek TMemo a nastavte u něj
  • ScrollBars=ssAutoBoth
  • WordWrap=False
Lazarus
29 Vložte do cyklu procedury Button1Click příkaz pro kopírování řádků z procházené databáze do Memo1 tak, aby výsledné řádky šly zkopírovat přes schránku do Excelu - musí zůstat zachovány sloupce
  • Pro přidání řádku do Memo1 použijte Memo1.Lines.Add(string); jako oddělovač sloupců použijte znak tabulátor = chr(9), tedy Memo1.Lines.Add(SdfDataSet1.Fields[0].Value + chr(9) + SdfDataSet1.Fields[1].Value + chr(9) + SdfDataSet1.Fields[2].Value);
  • Po kliknutí na buttonu nejprve vyprázdněte Memo1 pomocí Memo1.Clear;
30 Zkompilujte a spusťte aplikaci, ověřte funkčnost včetně vložení dat do Excelu
31 Ukončete aplikaci a IDE Lazarus
32 Celou složku c:\temp\osoby zkopírujte na fileserver do složky 05