Binární soubory - řetězce různé délky

Určitě Vám neuniklo, že předchozí kód má jednu značnou nevýhodu - musíte znát délku řetězce, což zase tak často nebývá. Protože, jak jsem si již ukázali dříve, číslo může mít jakoukoliv délku, pak si nejprve uložíme délku řetězce a teprve potom řetězec:

Dim nFileNum As Integer
Dim nLen As Integer, sString As String
nFileNum = FreeFile
Open App.Path & "\example.bin" For Binary Access _
   Write Lock Read Write As #nFileNum
'Naplníme proměnnou
sString = "Příklad binárních textů"
'zjistíme její délku
nLen = Len(sString)
'a oboje zapíšeme
Put #nFileNum, , nLen
Put #nFileNum, , sString
Close #nFileNum

Při čtení si nejprve zjistíme délku a potom načteme řetězec:

Dim nFileNum As Integer
Dim nLen As Integer, sString As String
nFileNum = FreeFile
Open App.Path & "\example.bin" For Binary Access _
   Read Lock Read Write As #nFileNum
'Načtení délky
Get #nFileNum, , nLen
'Inicializace proměnné se správným počtem mezer
sString = Space$(nLen)
Get #nFileNum, , sString
Close #nFileNum
Msgbox sString

Pokud jste si dobře všimli, tak nespecifikujeme pozici, odkud se má začít psát nebo číst. Je to proto, že délka řetězce může být různě dlouhá. Místo toho necháme parametr prázdný a VB se automaticky přesune na další část dat kdykoliv zavoláme příkaz Get. Musíme ale vždy zapisovat a číst data ve stejném pořadí. Pokud se budete chtít pokoušet načíst proměnnou, která byla zapsána jakou poslední první, jste v troubě.

Zpět Další

Autor: The Bozena