Binární soubory - zápis a čtení

Pokud zapisujeme do binárního souboru, používáme na to příkaz Put. Má následující definici:

Put #FileNumber, ByteNumber, VariableName

Proměnná FileNumber je číslo volného souboru, které používáme při otevírání, ByteNumber je pozice, na které chceme začít zapisovat data a VariableName je jméno proměnné (nebo řetězec, obsahující data), kterou chceme do souboru zapsat. Jako příklad uveďme založení nového souboru a nastavení prvního bytu na hodnotu 2:

Dim nFileNum As Integer
nFileNum = FreeFile
Open App.Path & "\example.bin" For Binary Access _
   Write Lock Read Write As #nFileNum Read Write As #nFileNum
Put #nFileNum, 1, 2
'zapíše hodnotu 2 na byt 1
Close #nFileNum

Nyní je třeba nalézt postup, jak si tuto hodnotu přečíst. Ve Visual Basicu lze využít příkaz Get, který má ty samé části jako příkaz Put:

Get #FileNumber, ByteNumber, VariableName

Proměnná VariableName nyní představuje proměnnou, do které se uloží načtená data. Všimněte si, že nespecifikuje, kolik bytů chceme načíst. Při používání binárních souborů se toto nastavuje deklarací délky proměnné VariableName.

Pokud jsme do souboru zapsali integerovou hodnotu 1, musí být VariabLena datového typu Integer. Ať zapíšeme čtyři čísla nebo jen jedno, proměnná VariableName bude vždy obsazena korektní hodnotou. V následujícím příkladu si přečteme hodnotu ze souboru, kterou jsme uložili v předchozím příkladu:

Dim nFileNum As Integer, nNumber As Integer
nFileNum = FreeFile
Open App.Path & "\example.bin" For Binary Access _
   Read Lock Read Write As #nFileNum
Get #nFileNum, 1, nNumber
Close #nFileNum
Msgbox nNumber

Pokud spustíte první příklad a pak i příklad druhý, obdržíte zprávu s číslem 2, což je hodnota zapsaná do binárního souboru. Nyní zkuste zaměnit řádek
Put #nFileNum, 1, 2

na
Put #nFileNum, 1, 25432
a zkuste spustit jak první, tak druhý příklad. Pokud očekáváte zobrazení čísla 2, pak se mýlíte, neboť se vrátí 25432. Toto je jedna z velkých věcí binárního přístupu - ať zapisujete číslo nebo datovou strukturu, nezáleží na tom, jak jsou dlouhé položky, VB vždy vrátí správnou délku.

Zpět Další

Autor: The Bozena