BlockRead: Porovnání verzí
Skočit na navigaci
Skočit na vyhledávání
m (1 revízia: Unit System) |
|||
Řádek 37: | Řádek 37: | ||
{Blockrd.PAS} | {Blockrd.PAS} | ||
{Vzorový příklad pro procedury BlockRead a BlockWrite.} | {Vzorový příklad pro procedury BlockRead a BlockWrite.} | ||
+ | |||
program CopyFile; | program CopyFile; | ||
{ Prostý kopírovací program bez kontroly chyb } | { Prostý kopírovací program bez kontroly chyb } | ||
{ Pro Windows: } | { Pro Windows: } | ||
{ uses WinCrt; } | { uses WinCrt; } | ||
+ | |||
var | var | ||
FromF, ToF: file; | FromF, ToF: file; |
Aktuální verze z 9. 1. 2014, 12:42
Načte jednu nebo více vět ze souboru do proměnné.
- Deklarace
procedure BlockRead(var F: File; var Buf; Count: Word [; var Result: Word]);
kde:
F je proměnná - soubor bez typu Buf je libovolná proměnná Count je výraz typu Word Result je proměnná typu Word
- Režim
- Windows, Reálný, Chráněný
- Poznámky
- F je proměnná - soubor bez typu, Buf je libovolná proměnná, Count je výraz typu Word a Result je proměnná typu Word .
- BlockRead načte Count nebo méně vět ze souboru F do paměti, počínaje na prvním bajtu, který zabírá Buf. Skutečný počet úplných přečtených vět (který je menší nebo roven Count), se vrací v nepovinném parametru Result. Pokud Result není určen, při nepřečtení zadaného počtu vět dojde k chybě I/O.
- Celý přenesený blok zabírá maximálně Count symbolů * RecSize bajtů, přičemž RecSize je délka věty, stanovená při otevírání souboru. Není-li stanovena, je rovna 128 bajtů. Pokud Count symbolů * RecSize je větší než 65.535 bajtů (64K), generuje se chyba.
- Result je nepovinný parametr. Pokud byl přenesen celý blok, je Result při návratu roven Count. Jinak, jestliže Result je menší než Count, před dokončením přenosu bylo dosaženo konce souboru. V tom případě, pokud je délka věty větší než jedna, Result vrací počet načtených úplných vět.
- Aktuální pozice v souboru se posune v důsledku volání BlockRead o Result vět.
- V režimu {$I-} vrací funkce IOResult hodnotu 0 pro úspěšnou operaci, jinak nenulový chybový kód.
- Omezení
- Soubor musí být otevřený.
- Viz také
- BlockWrite
Vzorový příklad
{Blockrd.PAS} {Vzorový příklad pro procedury BlockRead a BlockWrite.} program CopyFile; { Prostý kopírovací program bez kontroly chyb } { Pro Windows: } { uses WinCrt; } var FromF, ToF: file; NumRead, NumWritten: Word; Buf: array[1..2048] of Char; begin Assign(FromF, ParamStr(1)); { Otevři vstupní soubor } Reset(FromF, 1); { Velikost záznamu = 1 } Assign(ToF, ParamStr(2)); { Otevři výstupní soubor } Rewrite(ToF, 1); { Velikost záznamu = 1 } Writeln('Kopíruje se ', FileSize(FromF), ' bajtů...'); repeat BlockRead(FromF, Buf, SizeOf(Buf), NumRead); BlockWrite(ToF, Buf, NumRead, NumWritten); until (NumRead = 0) or (NumWritten <> NumRead); Close(FromF); Close(ToF); end.