U řady maker je potřeba, aby si ukládaly nastavení. Jednoznačně preferujeme ukládání těchto nastavení do databáze.
Nastavení dělíme na:
Jak už název napovídá, jsou tato nastavení platná pouze pro aktuálně přihlášeného uživatele. Používáme makroprocedury a funkce:
Tyto procedury ukládají a čtou řetězcové proměnné až do délky 400 znaků podle longint indexu do databáze pro aktuálně přihlášeného uživatele. Je vhodné, aby makrosystem obsahoval společný include soubor s výčtem používaných indexů pro tyto účely.
Pod jedním indexem lze uložit jednoduché nastavení, nebo složené a rozebírané pomocí procedury StrExtract.
Příklad:
Uložení:
const cUSI_xxx = 1
const cUSI_yyy = 2
dim a : Word;
dim d : Date;
dim s10 : String[10];
s10 := "Text";
a := 555;
d := _ActDate;
SetUserSetItem(cUSI_xxx, _Str(a) + #9 + s10 + #9 + _Str(_DateToDay(d)) + #9);
Nahrání:
dim a : Word;
dim d : Date;
dim i : Integer;
dim s10 : String[10];
dim sz : StringZ;
dim s1 : StringZ;
if(_GetUserSetItem(cUSI_xxx, sz))then
StrExtract(sz, s1, sz, #9); a := _Val(s1,i);
StrExtract(sz, s1, sz, #9); s10 := s1;
StrExtract(sz, s1, sz, #9); d := _DayToDate(_Val(s1,i));
endif
Tato nastavení jsou společná pro všechny uživatele. Řeší se pomocí INI souborů ukládaných do databáze.
Používáme makroprocedury a funkce:
Příklad:
Uložení:
procedure UlozNastavení
dim f : Word;
dim a : Word;
IOpen(f, "Test", true, "MACPOM");
IPut(f, "GRP", "LAB1", "testovací hodnota");
IClose(f)
endproc
Nahrání:
procedure PrectiNastaveni
dim f : Word;
dim a : Word;
dim s : String;
IOpen(f, "Test", true, "MACPOM");
_IGet(f, "GRP", "LAB1", s);
IClose(f)
endproc