Změny

Skočit na navigaci Skočit na vyhledávání

BlockRead

Přidáno 2 523 bajtů, 5. 10. 2012, 13:39
Vytvorená stránka „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...“
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.

[[Category:System]]
[[Category:Procedúry System]]

Navigační menu