# system

### Funkce:

Přístroj zprostředkovává služby systému voláním nativních procedur.

### Nativní procedury přístroje

    RefreshAll()

Nastavení veškerých objektů podle aktuálního stavu příslušných datových elementů. Používá se např. po obnově zálohovaných dat přístrojem Backup.

    CopyFile( ShowStatus : boolean; SrcPath, DstPath : string; &Ok : boolean;
              &ErrorNumber : number )

Procedura zkopíruje zdrojový soubor do cílového.
Popis parametrů:

- ShowStatus
  je-li true, je během kopírování zobrazován dialogový box s "teploměrem" indikujícím stav kopírování.
- SrcPath
  jméno zdrojového souboru. Součástí jména může být cesta a jsou v něm akceptovány žolíky "?" a "*" podle konvencí operačního systému Windows.
- DstPath
  jméno cílového souboru. Součástí jména může být cesta a jsou v něm akceptovány žolíky "?" a "*" podle konvencí operačního systému Windows.
- Ok
  po ukončení kopírování je tato proměnná naplněna výsledkem kopírování. Nenastala-li během kopírování chyba je její hodnota true v opačném případě false.
- ErrorNumber
  nastala-li při kopírování chyba (parametr Ok je false) je do této proměnné nastaveno číslo chyby Windows, která nastala.

    DeleteFile( Path : string; &Ok : boolean; &ErrorNumber : number )

Procedura smaže soubor.
Popis parametrů:

- Path
  jméno mazaného souboru. Součástí jména může být cesta a jsou v něm akceptovány žolíky "?" a "*" podle konvencí operačního systému Windows.
- Ok
  po ukončení mazání je tato proměnná naplněna výsledkem mazání. Nenastala-li během mazání chyba je její hodnota true v opačném případě false.
- ErrorNumber
  nastala-li při mazání chyba (parametr Ok je false) je do této proměnné nastaveno číslo chyby Windows, která nastala.

    CreateDir( Path : string; &Ok : boolean; &ErrorNumber : number )

Procedura založí podadresáře.
Popis parametrů:

- Path
  jméno podadresářů. Pokud se v cestě vyskytuje více neexistujících adresářů, založí se všechny podadresáře.
- Ok
  po ukončení zakládání je tato proměnná naplněna výsledkem této operace. Nenastala-li během zakládání chyba je její hodnota true v opačném případě false.
- ErrorNumber
  nastala-li při zakládání chyba (parametr Ok je false) je do této proměnné nastaveno číslo chyby Windows, která nastala.

    DeleteDir( Path : string; &Ok : boolean; ErrorNumber : number )

Procedura zruší adresář.
Popis parametrů:

- Path
  jméno adresáře ke smazání. Smazán bude vždy jeden (poslední v cestě) adresář.
- Ok
  po smazání je tato proměnná naplněna výsledkem mazání. Nenastala-li během zakládání chyba je její hodnota true v opačném případě false.
- ErrorNumber
  nastala-li při mazání chyba (parametr Ok je false) je do této proměnné nastaveno číslo chyby Windows, která nastala.

    GetActiveDir( &ActiveDir : string; &Ok : boolean; &ErrorNumber : number )

Procedura vrátí aktuální adresář aktuálního disku.
Popis parametrů:

- ActiveDir
  Procedura naplní tento parametr aktuální cestou. Tato cesta je vždy ukončena zpětným lomítkem "\".
- Ok
  po ukončení operace je tato proměnná naplněna jejím výsledkem. Nenastala-li během operace chyba je hodnota parametru true v opačném případě false.
- ErrorNumber
  nastala-li při operaci chyba (parametr Ok je false) je do této proměnné nastaveno číslo chyby Windows, která nastala.

    GetActiveDrive( &ActiveDrive : number; &Ok : boolean; &ErrorNumber : number )

Procedura vrátí číslo aktuálního disku.
Popis parametrů:

- ActiveDrive
  Procedura naplní tento parametr číslem aktuálního disku. Disky jsou číslovány od čísla 1, čili disku "A" odpovídá číslo 1, disku "B" číslo 2 atd.
- Ok
  po ukončení operace je tato proměnná naplněna jejím výsledkem. Nenastala-li během operace chyba je hodnota parametru true v opačném případě false.
- ErrorNumber
  nastala-li při operaci chyba (parametr Ok je false) je do této proměnné nastaveno číslo chyby Windows, která nastala.

    GetREDFullPath( FileName : string; &FullName : string; &Ok : boolean; &ErrorNumber : number )

Procedura vybere podle sekce directories (případně podle aplikačního RED souboru) cestu, na které se nachází soubor FileName. Není-li soubor nalezen, vrátí v parametru Ok hodnotu false.
Popis parametrů:

- FileName
  dvanáctiznakové jméno souboru, ke kterému je nutné vyhledat jeho celou cestu.
- FullName
  vyhledaná úplná cesta k souboru FileName
- Ok
  po ukončení operace je tato proměnná naplněna jejím výsledkem. Nenastala-li během operace chyba je hodnota parametru true v opačném případě false.
- ErrorNumber
  nastala-li při operaci chyba (parametr Ok je false) je do této proměnné nastaveno číslo chyby Windows, která nastala.

    GetREDCreateDir( FileName : string; &FullCreateName : string; &Ok : boolean; &ErrorNumber : number )

Procedura vybere podle sekce directories (případně podle aplikačního RED souboru) cestu, na které se bude nacházet soubor FileName, bude-li založen.
Popis parametrů:

- FileName
  dvanáctiznakové jméno souboru, ke kterému je nutné vyhledat jeho místo založení.
- FullCreateName
  vyhledaná úplná cesta k budoucímu souboru FileName, který má být založen.
- Ok
  po ukončení operace je tato proměnná naplněna jejím výsledkem. Nenastala-li během operace chyba je hodnota parametru true v opačném případě false.
- ErrorNumber
  nastala-li při operaci chyba (parametr Ok je false) je do této proměnné nastaveno číslo chyby Windows, která nastala.

    FileExists( Path : string; &Exists : boolean; &Ok : boolean; &ErrorNumber : number )

Popis parametrů:

- Path
  jméno souboru i s jeho cestou, jehož přítomnost se má zjistit
- Exists
  výsledek vyhledávání, existuje-li soubor, je tento parametr naplněn hodnotou true, v opačném případě hodnotou false.
- Ok
  po ukončení operace je tato proměnná naplněna jejím výsledkem. Nenastala-li během operace chyba je hodnota parametru true v opačném případě false.
- ErrorNumber
  nastala-li při operaci chyba (parametr Ok je false) je do této proměnné nastaveno číslo chyby Windows, která nastala.

    GetFirstEntry( Mask, DirPath : string; &EntryName : string; &Ok : boolean;
                   &ErrorNumber : number )

Procedura zahájí prohledávání adresáře definovaného parametrem DirPath a bude vyhledávat soubory odpovídající parametru Mask.
Popis parametrů:

- Mask
  maska pro jména souborů, která se mají vyhledávat. Součástí masky mohou být "žolíky" - znaky "*" a "?". Znak "*" zastupuje libovolnou sekvenci znaků a znak "?" zastupuje jeden jakýkoli znak. Například při použití masky "A*.CW?" budou vyhledávány všechny programové soubory systému Control Web (CW a CWX), které začínají písmenem "A".
- DirPath
  jméno adresáře, který se má prohledávat. Jméno adresáře musí být ukončeno znakem zpětné lomítko "\".
- EntryName
  První jméno souboru s cestou v adresáři DirPath, který odpovídá masce Mask.
- Ok
  po ukončení operace je tato proměnná naplněna jejím výsledkem. Nenastala-li během operace chyba a byl-li nalezen alespoň jeden soubor odpovídající specifikaci je hodnota parametru true v opačném případě false.
- ErrorNumber
  nastala-li při operaci chyba (parametr Ok je false) je do této proměnné nastaveno číslo chyby Windows, která nastala.

    GetNextEntry( &EntryName : string; &Ok : boolean; &ErrorNumber : number )

Procedura vrátí následující jméno souboru odpovídající specifikaci definované pomocí GetFirstEntry.
Popis parametrů:

- EntryName
  Další jméno souboru i s jeho cestou, který se nachází ve zvoleném adresáři a odpovídá masce definované v parametru Mask metody GetFirstEntry.
- Ok
  po ukončení operace je tato proměnná naplněna jejím výsledkem. Nenastala-li během operace chyba a byl-li nalezen soubor odpovídající specifikaci je hodnota parametru true v opačném případě false.
- ErrorNumber
  nastala-li při operaci chyba (parametr Ok je false) je do této proměnné nastaveno číslo chyby Windows, která nastala.

    SplitPath( Path : string; &Head, &Tail : string );

Procedura rozdělí cestu k souboru na jméno adresáře a vlastní jméno souboru.
Popis parametrů:

- Path
  cesta k souboru
- Head
  jméno adresáře oddělené od jména souboru. Cesta končí vždy zpětným lomítkem - "\".
- Tail
  jméno souboru oddělené od jména adresáře

    MakePath( Head, Tail : string; &Path : string );

Procedura vytvoří cestu k souboru ze jména adresáře a vlastního jména souboru.
Popis parametrů:

- Head
  jméno adresáře souboru. Cesta musí vždy končit zpětným lomítkem - "\".
- Tail
  vlastní jméno souboru
- Path
  cesta k souboru vytvořená spojením jeho adresáře a jeho jména.

    OpenPrinter( DocName : string; &Result : boolean );

Připraví tiskárnu pro tisk. Standardně se tiskne na tiskárnu, která je nastavena ve Windows jako výchozí. Tiskárnu, na kterou se bude tisknout lze určit pomocí nativní procedury SetPrinterName.
Parametr DocName je název dokumentu, který bude zobrazen v okně tiskové fronty tiskárny. V parametru Result je vrácena hodnota true, pokud se podaří tiskárnu otevřít.
Tuto metodu (nebo jednu z metod OpenDefaultPrinter a OpenPrinterName) je nutné zavolat před započetím tisku!

    OpenDefaultPrinter( DocName : string; &Result : boolean );

Připraví tiskárnu, která je nastavena ve Windows jako výchozí pro tisk.
Parametr DocName je název dokumentu, který bude zobrazen v okně tiskové fronty tiskárny. V parametru Result je vrácena hodnota true, pokud se podaří tiskárnu otevřít.
Tuto metodu (nebo jednu z metod OpenPrinter a OpenPrinterName) je nutné zavolat před započetím tisku!

    OpenPrinterName( PrinterName, DocName : string; &Result : boolean );

Připraví tiskárnu specifikovanou parametrem PrinterName pro tisk.
Parametr DocName je název dokumentu, který bude zobrazen v okně tiskové fronty tiskárny. V parametru Result je vrácena hodnota true, pokud se podaří tiskárnu otevřít.
Tuto metodu (nebo jednu z metod OpenPrinter a OpenDefaultPrinter) je nutné zavolat před započetím tisku!

    ClosePrinter();

Uzavře tiskárnu, na kterou se právě tiskne nativními proceduremi pro tisk.
Tuto metodu je nutné zavolat po ukončení tisku!

    Print( V : value );

Vytiskne hodnotu V.

    PrintLn();

Odřádkuje.

    PrintFF();

Odstránkuje.

    PrintCmd( Cmd : string );

Vyšle do zařízení řetězec Cmd řídicích znaků.

- Cmd
  Řetězec řídicích znaků oddělených čárkami. Např. řetězec pro sekvenci ESC <15> - '27, 15'

    PrintAdj( V : value; Length : number );

Formátovaný tisk.

- V
  Tisknutá hodnota
- Length
  Je-li parametr kladný je hodnota V zarovnávána na délku Length doplněním znaků zleva, je-li parametr záporný, je hodnota V zarovnávána na délku Length doplněním znaků zprava

    PrintFixReal( V : real; DecPlaces : number; Length : number );

Vytiskne formátované reálné číslo.

- V
  Reálné číslo
- DecPlaces
  Počet desetinných míst
- Length
  Celková délka

    PrintCharRep( Ch : string; N : number );

Vytiskne N-krát znak Ch.

    SetPrinterName( PrinterName : string );

Jméno tiskárny, které bude použito při volání nativní procedury OpenPrinter a pro tisk alarmů. Pokud bude parametr PrinterName obsahovat prázdný řetězec, bude se tisknout na tiskárnu, která je ve Windows nastavena jako výchozí.

    SetDisablePrint( Disable : boolean );

Zakáže tisk nativními procedurami i tisk alarmů.

    SetPrintPrefixChar( Ch : string );

Nastavení znaku, který bude použit při formátovaném tisku pro doplnění znaků zleva. Standardně je nastaven znak ' '.

    SetPrintSufixChar( Ch : string );

Nastavení znaku, který bude použit při formátovaném tisku pro doplnění znaků zprava. Standardně je nastaven znak ' '.

    SetPrintTrueStr( S : string );

Nastavení textu, kterým bude vypisována logická hodnota true.

    SetPrintFalseStr( S : string );

Nastavení textu, kterým bude vypisována logická hodnota false.

    SetPrintToFile( Enable : boolean; FileName : string );

Parametr Enable povoluje tisk do textového souboru FileName. Pro výhradní tisk do souboru je třeba zavolat nativní proceduru SetPrinterDevice( '---' ).

    SetPrintCode( Code : numeric );

Procedura umožňuje definovat v jakém kódování češtiny (slovenštiny) budou tisknuty řetězce znaků přes ASCII printer (využívají ho všechny systémové nativní procedury pro tisk a přístroj alarm). V současné době jsou podporovány následující kódové stránky. Index těchto kódových stránek se uplatňuje v parametru Code:

  0 - ISO1250
  1 - Kameničtí
  2 - Latin2
  3 - KOI8ČS
  4 - ASCII

    SetDate( Year, Month, Day : number );

Nastavení systémového data.

    SetTime( Hour, Minute, Second : number );

Nastavení systémového času.

    DateToJD( Year, Month, Day : number; &JD : real );
    DateToJD( Year, Month, Day, Hour, Minute, Seconds : number; &JD : real );

Vypočítá ze zadaných hodnot Juliánské datum .

    JDToDate( JD : real; &Year, &Month, &Day : real );
    JDToDate( JD : real; &Year, &Month, &Day, &Hour, &Minute, &Seconds : real );

Vypočítá z Juliánského data výstupní hodnoty .

    DayOfWeek( JD : real; &DayOfWeek : real );
    DayOfWeek( Year, Month, Day : number; &DayOfWeek : real );

Vypočítá z Juliánského data nebo data občanského pořadí dne v týdnu. Výstupní hodnoty: 0 = pondělí, 1 = úterý až 6 = neděle .

    SetNewUser( LoginLevel : number, LoginName : string );

Přihlášení nového uživatele. Tato procedura umožnuje zadat jakoukoliv požadovanou úroveň i jméno nového uživatele.

    StopApplication();

Bezpodmínečné a neodvolatelné zastavení běhu aplikačního programu a uvolnění všech objektů z paměti. Pozor, použití této metody doporučujeme předem promyslet.

    ShowLoginWindow();
    HideLoginWindow();

Skryje nebo zobrazí okno s výpisy systému.

    SetMouseXY( x, y : number );
    GetMouseXY( &x, &y : number );

Nastaví nebo přečte souřadnice myši.

    SetPrinter( PrinterName : string; &ResultCode : real );
    GetPrinter( &PrinterName : string );

Přečte nebo nastaví aktivní tiskárnu. Printer Name je celé jméno tiskárny, tj. např. "HP DeskJet 500/510" tak, jak je zapsáno v dialogovém okně nastavení tiskáren, nebo v souboru VIDEO.SUB.
Parametr ResultCode může nabývat těchto hodnot: 0 - OK, 1 - tiskárnu se nepodařilo nastavit, 2 - tiskárna daného jména neexistuje.

    HideScreenSaver();

Procedura skryje případně aktivní ScreenSaver.

    ConvertString( sourceCode, destinationCode : longreal; sourceString : string;
                   &destinationString : string );

Procedura umožňující převod řetězcových proměnných mezi různými kódovými stránkami. V současné době jsou podporovány následující kódové stránky. Indexy těchto kódových stránek se uplatňují v parametrech sourceCode a destinationCode:

  0 - ISO1250
  1 - Kameničtí
  2 - Latin2
  3 - KOI8ČS
  4 - ASCII
  5 - ISO Russian (Win32)
  6 - PC866 Russian

    AllTimeSteps( set : boolean );

Tato procedura slouží k přepínání dvou režimů časování při skluzu aplikce vlivem časově náročné operace (např. čtením a dekódováním obrázků apod.). Je-li parametr set roven hodnotě true, budou vykonány všechny časové kroky. V tomto případě může dojít po ukončení časově náročné operace ke "zhuštění" časových kroků u virtuálních přístrojů. V případě, že je parametr set nastaven na hodnotu false, nebudou vykonány vynechané časové kroky po ukončení doby, po kterou byla aplikace zdržena. Jsou-li v aplikaci použity přístroje s absolutním časovým krokem, nelze tento režim použít. Pozor, použití této metody doporučujeme předem promyslet. Po spuštění aplikace je systém v režimu, kdy vykonává všechny časové kroky.

    DecodeArchiveFileName( FileName : string; &Day, &Month, &Year, &Hour, &Mins : number; &ok : boolean );

Tato procedura vrací datum a čas ze zakódovaného jména archivního souboru.
Význam parametrů:

- FileName - zakodované jméno archivního souboru
- Day - den
- Month - měsíc
- Year - rok
- Hour - hodina
- Mins - minuta
- ok - výsledek operace

    EncodeArchiveFileName( FileId : string; AbsoluteFile : boolean
                        FileLength, FileStartMinute, FileStartHour, FileStartDay, FileStartMonth, Mins, Hour,
                        Day, Month, Year : number; &FileName : string );

Tato procedury vrací zakódované jméno archivního souboru.
Poznámka:
Procedura vrací pouze nové kódování jména souboru!

- FileId
  identifikátor souboru (max. 3 znaky)
- AbsoluteFile
  pro absolutní soubor true pro relativní false
- FileLength
  časové období zachycené v archivním souboru
    1 - minutový soubor
    2 - hodinový soubor
    3 - denní soubor
    4 - měsíční soubor
    5 - roční soubor
- FileStartMinute
  minuta, ve které je zakládán absolutní soubor
- FileStartHour
  hodina, ve které je zakládán absolutní soubor
- FileStartDay
  den, ve kterém je zakládán absolutní soubor
- FileStartMonth
  měsíc, ve kterém je zakládán absolutní soubor
- Mins
  minuta pro požadovaný soubor
- Hour
  hodina pro požadovaný soubor
- Day
  den pro požadovaný soubor
- Month
  měsíc pro požadovaný soubor
- Year
  rok pro požadovaný soubor
- FileName
  zakodované jméno archivního souboru

    CryptFile( CryptKind : number; SrcPath, DstPath, Key : string;
               &ok : boolean; &result : real )
    DecryptFile( CryptKind : number; SrcPath, DstPath, Key : string;
                 &ok : boolean; &result : real )

Metody kryptují soubory. Zadávají se jména souborů a klíč, jímž se kryptuje. Nepodaří-li se nějaké operace se soubory, parametr ok bude nastaven na false a parametr result obsahuje kód chyby.
Parametr CryptKind může nabývat následujících hodnot: 1 - algoritmus DES, 2 - algoritmus GHOST. Podle druhu šifry musí mít parametr Key nejméně 8 znaků pro šifru DES a nejméně 32 znaků pro šifru GHOST.

    GetCRCOfFile( CRCKind : number; FilePath : string; &CRC : real )
    GetCRCOfString( CRCKind : number; InputString : string; &CRC : real )

Metody počítají CRC (cyklický zabezpečovací kód) buď pro soubor, nebo řetězec.
Parametr CRCKind může nabývat následujících hodnot: 1 - CRC A001, 2 - CRC 1021, 3 - 32-bitový CRC.

    Randomize();

Inicializuje generátor pseudonáhodných čísel.

    Rand( &r : real );

V parametru r vrátí pseudonáhodné reálné číslo z intervalu <0,1). Před prvním voláním této metody je třeba zavolat metodu Randomize

    DriverQueryProc( DriverName : string; DrvParam1 : any; &DrvParam2 : any );

Procedura slouží k vyvolání obecné uživatelské funkce ovladače. Parametr DriverName určuje symbolické jméno ovladače, parametr DrvParam1 se předává do ovladače a parametr DrvParam2 slouží jak k předání hodnoty, tak k vrácení hodnoty z ovladače. Funkce procedury je závislá na konkrétním ovladači.

    RunProgram( &ok : boolean; &ThreadIdentifier : real; ProgramName : string;
                Parameters : string; XPosition : number; YPosition : number;
                WPosition : number; DPosition : number; Minimized : boolean );

Prostřednictvím této metody je možno spustit libovolný program pro systém Windows. V proměnné ok je vrácena hodnota true při úspěšném spuštění požadovaného programu a false při neúspěšném pokusu o spuštění. Je možno také zadat požadované souřadnice a velikost hlavního okna programu (akceptování těchto parametrů je plně v moci spouštěného programu - ne každý program musí správně reagovat). Je-li šířka nebo výška okna zadána nulová, okno programu bude otevřeno na jeho vlastní implicitní pozici a s implicitní velikostí. V proměnné ThreadIdentifier je při úspěšném spuštění vrácen číselný identifikátor hlavního prováděcího toku programu, při neúspěšném spuštění je v této proměnné vrácena nula.

    StopProgram( &ok : boolean; ThreadIdentifier : real );

Prostřednictvím této metody je možno ukončit libovolný běžící program systému Windows, známe-li jeho číselný identifikátor hlavního prováděcího toku, kterým je naplněna proměnná ThreadIdentifier. Procedura nečeká na dokončení akce a neukončuje "násilně" žádné procesy. Návratová hodnota true parametru ok pouze znamená, že prováděcí tok v systému opravdu existuje a že do jeho fronty událostí byla zařazena zpráva, že by související proces měl být ukončen. Záleží tedy plně na každém programu, jak s touto zprávou naloží. POZOR - nesprávné používání této metody s nekorektní hodnotou proměnné ThreadIdentifier může zastavit libovolný proces v systému a tím poškodit jeho funkci!