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.
|