# file

### Funkce

Umožňuje pracovat s obecným diskovým souborem. Veškerá funkčnost je realizována pouze prostřednictvím volání nativních procedur přístroje.

### Syntax

       file file_name;
         rem = string;
         timer = timer_name;
         send_same_data;
         driver_exception = driver_name;
       end_file;

## Nativní procedury přístroje

    Open( Path : string; &Result : boolean )

Otevře soubor Path a výsledek operace vrátí v parametru Result.
Poznámka: Pokud pracuje instance tohoto přístroje s nějakým otevřeným souborem, je tento soubor nejprve uzavřen.

    OpenRead( Path : string; &Result : boolean )

Otevře soubor Path jen pro čtení a výsledek operace vrátí v parametru Result.
Poznámka: Pokud pracuje instance tohoto přístroje s nějakým otevřeným souborem, je tento soubor nejprve uzavřen.

    Create( Path : string; &Result : boolean )

Založí a ponechá otevřený soubor Path a výsledek operace vrátí v parametru Result. Poznámka: Pokud pracuje instance tohoto přístroje s nějakým otevřeným souborem, je tento soubor nejprve uzavřen.

    Append( Path : string; &Result : boolean )

Otevře soubor Path a ukazatel pozice v souboru nastaví na jeho konec. Výsledek operace vrátí v parametru Result.
Poznámka: Pokud pracuje instance tohoto přístroje s nějakým otevřeným souborem, je tento soubor nejprve uzavřen.

    Close()

Zavře právě otevřený soubor.

    Size( &FileSize : number )

V parametru FileSize vrátí velikost právě otevřeného souboru.

    GetPos( &Position : number )

V parametru Position vrátí aktuální pozici ukazovátka v právě otevřeném souboru.

    Seek( Position : number )

Nastaví ukazovátko pozice v právě otevřeném souboru na pozici uvedenou v parametru Position.

    Truncate()

Odstraní část souboru, která se nachází za aktuální pozicí ukazovátka v souboru. Velikost souboru se tedy bude rovnat pozici ukazovátka.

    RdBool( &Value : boolean )

Načte z právě otevřeného souboru hodnotu typu boolean (1 byte) a vrátí ji v parametru Value.

    RdShtCard( &Value : number )

Načte z právě otevřeného souboru hodnotu typu shortcard (1 byte) a vrátí ji v parametru Value.

    RdCard( &Value : number )

Načte z právě otevřeného souboru hodnotu typu cardinal (2 bytes) a vrátí ji v parametru Value.

    RdLngCard( &Value : number )

Načte z právě otevřeného souboru hodnotu typu longcard (4 bytes) a vrátí ji v parametru Value.

    RdShtInt( &Value : number )

Načte z právě otevřeného souboru hodnotu typu shortint (1 byte) a vrátí ji v parametru Value.

    RdInt( &Value : number )

Načte z právě otevřeného souboru hodnotu typu integer (2 bytes) a vrátí ji v parametru Value.

    RdLngInt( &Value : number )

Načte z právě otevřeného souboru hodnotu typu longint (4 bytes) a vrátí ji v parametru Value.

    RdShtReal( &Value : number )

Načte z právě otevřeného souboru hodnotu typu shortreal (4 bytes) a vrátí ji v parametru Value.

    RdReal( &Value : number )

Načte z právě otevřeného souboru hodnotu typu real (8 bytes) a vrátí ji v parametru Value.

    RdStr( &Value : string )

Načítá znaky z právě otevřeného souboru a ukládá je do parametru Value typu string tak dlouho, dokud nenarazí na znak EOF (1AH) nebo LF (10H) nebo na dvojici znaků CR LF (0DH 0AH) nebo dokud není parametr naplněn (tzn. maximálně 255 znaků).

    RdSizeStr( &Value : string )

Načte z právě otevřeného souboru řetězec znaků a vrátí ho v parametru Value.
Poznámka: Řetězec znaků je v souboru uložen tak, že vlastnímu řetězci předchází jeden byte, který obsahuje délku řetězce.

    WrBool( Value : boolean )

Zapíše do právě otevřeného souboru hodnotu typu boolean (1 byte) obsaženou v parametru Value.

    WrShtCard( Value : number )

Zapíše do právě otevřeného souboru hodnotu typu shortcard (1 byte) obsaženou v parametru Value.

    WrCard( Value : number )

Zapíše do právě otevřeného souboru hodnotu typu cardinal (2 bytes) obsaženou v parametru Value.

    WrLngCard( Value : number )

Zapíše do právě otevřeného souboru hodnotu typu longcard (4 bytes) obsaženou v parametru Value.

    WrShtInt( Value : number )

Zapíše do právě otevřeného souboru hodnotu typu shortint (1 byte) obsaženou v parametru Value.

    WrInt( Value : number )

Zapíše do právě otevřeného souboru hodnotu typu integer (2 bytes) obsaženou v parametru Value.

    WrLngInt( Value : number )

Zapíše do právě otevřeného souboru hodnotu typu longint (4 bytes) obsaženou v parametru Value.

    WrShtReal( Value : number )

Zapíše do právě otevřeného souboru hodnotu typu real (4 bytes) obsaženou v parametru Value.

    WrReal( Value : number )

Zapíše do právě otevřeného souboru hodnotu typu real (8 bytes) obsaženou v parametru Value.

    WrStr( Value : string )

Zapíše do právě otevřeného souboru řetězec znaků (až po znak NUL (00H)) obsažený v parametru Value.
Poznámka: Doporučujeme po této proceduře volat proceduru WrLn().

    WrSizeStr( Value : string )

Zapíše do právě otevřeného souboru řetězec znaků (až po znak NUL (00H)) obsažený v parametru Value.
Poznámka: Řetězec znaků je v souboru uložen tak, že vlastnímu řetězci předchází jeden byte, který obsahuje délku řetězce.

    WrLn()

Zapíše do právě otevřeného souboru sekvenci CRLF, tj. 0DH 0AH.

    WrCharRep( Char : string; Count : number

Zapíše do právě otevřeného souboru počet Count znaků Char.

    WrStrAdj( S : string; Length : number )

Zapíše do právě otevřeného souboru formátovaný řetězec znaků.
Poznámka: Je-li parametr kladný je řetězec S zarovnán na délku Length doplněním znaků zleva, je-li parametr záporný, je řetězec S zarovnán na délku Length doplněním znaků zprava.

    EOF( &Result : boolean )

V parametru Result vrací informaci, zda bylo při předešlé souborové operaci dosaženo konce souboru.

    IOresult( &Result : number )

V parametru Result vrací hodnotu indikující výsledek právě provedené souborové operace. Seznam hodnot a jejich popis:

      00 - NO_ERROR
      01 - ERROR_INVALID_FUNCTION
      02 - ERROR_FILE_NOT_FOUND
      03 - ERROR_PATH_NOT_FOUND
      04 - ERROR_TOO_MANY_OPEN_FILES
      05 - ERROR_ACCESS_DENIED
      06 - ERROR_INVALID_HANDLE
      07 - ERROR_ARENA_TRASHED
      08 - ERROR_NOT_ENOUGH_MEMORY
      09 - ERROR_INVALID_BLOCK
      10 - ERROR_BAD_ENVIRONMENT
      11 - ERROR_BAD_FORMAT
      12 - ERROR_INVALID_ACCESS
      13 - ERROR_INVALID_DATA
      15 - ERROR_INVALID_DRIVE
      16 - ERROR_CURRENT_DIRECTORY
      17 - ERROR_NOT_SAME_DEVICE
      18 - ERROR_NO_MORE_FILES
      19 - ERROR_WRITE_PROTECT
      20 - ERROR_I24_DEVICE_IN_USE
      21 - ERROR_NOT_READY
      22 - ERROR_BAD_COMMAND
      23 - ERROR_CRC
      24 - ERROR_BAD_LENGTH
      25 - ERROR_SEEK
      26 - ERROR_NOT_DOS_DISK
      27 - ERROR_SECTOR_NOT_FOUND
      28 - ERROR_OUT_OF_PAPER
      29 - ERROR_WRITE_FAULT
      30 - ERROR_READ_FAULT
      31 - ERROR_GEN_FAILURE
      32 - ERROR_SHARING_VIOLATION
      33 - ERROR_LOCK_VIOLATION
      34 - ERROR_WRONG_DISK
      35 - ERROR_FCB_UNAVAILABLE
      36 - ERROR_SHARING_BUFFER_EXCEEDED
      50 - ERROR_NOT_SUPPORTED
      51 - ERROR_REM_NOT_LIST
      52 - ERROR_DUP_NAME
      53 - ERROR_BAD_NETPATH
      54 - ERROR_NETWORK_BUSY
      55 - ERROR_DEV_NOT_EXIST
      56 - ERROR_TOO_MANY_CMDS
      57 - ERROR_ADAP_HDW_ERR
      58 - ERROR_BAD_NET_RESP
      59 - ERROR_UNEXP_NET_ERR
      60 - ERROR_BAD_REM_ADAP
      61 - ERROR_PRINTQ_FULL
      62 - ERROR_NO_SPOOL_SPACE
      63 - ERROR_PRINT_CANCELLED
      64 - ERROR_NETNAME_DELETED
      65 - ERROR_NETWORK_ACCESS_DENIED
      66 - ERROR_BAD_DEV_TYPE
      67 - ERROR_BAD_NET_NAME
      68 - ERROR_TOO_MANY_NAMES
      69 - ERROR_TOO_MANY_SESS
      70 - ERROR_SHARING_PAUSED
      71 - ERROR_REQ_NOT_ACCEP
      72 - ERROR_REDIR_PAUSED
      80 - ERROR_FILE_EXISTS
      81 - ERROR_DUP_FCB
      82 - ERROR_CANNOT_MAKE
      83 - ERROR_FAIL_I24
      84 - ERROR_OUT_OF_STRUCTURES
      85 - ERROR_ALREADY_ASSIGNED
      86 - ERROR_INVALID_PASSWORD
      87 - ERROR_INVALID_PARAMETER
      88 - ERROR_NET_WRITE_FAULT

    SetShareMode( Read, Write : boolean )

Nastavení režimu sdílení souboru, který určuje, jaké operace mohou s tímto souborem provádět jiné paralelně běžící programy. Toto nastavení využívají procedury Open, OpenRead, Create a Append.
Read - zpřístupnění souboru pro čtení
Write - zpřístupnění souboru pro zápis
Implicitně je nastaven parametr Read na hodnotu true a Write na hodnotu false.

## Událostní procedury přístroje

Přístroj může volat standardní událostní proceduru:

    OnActivate()

Podrobnější informace k této proceduře lze nalézt v kapitole Programování a procedury.