FileSystem.FileGetObject(Int32, Object, Int64) Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Čte data z otevřeného souboru na disku do proměnné. Tato My
funkce poskytuje vyšší produktivitu a výkon při vstupně-výstupních operacích souborů než FileGetObject
. Další informace naleznete v tématu FileSystem.
public static void FileGetObject (int FileNumber, ref object Value, long RecordNumber = -1);
static member FileGetObject : int * obj * int64 -> unit
Public Sub FileGetObject (FileNumber As Integer, ByRef Value As Object, Optional RecordNumber As Long = -1)
Parametry
- FileNumber
- Int32
Povinná hodnota. Libovolné platné číslo souboru
- Value
- Object
Povinná hodnota. Platný název proměnné, do které jsou načtena data.
- RecordNumber
- Int64
Nepovinný parametr. Číslo záznamu (Random
soubory režimu) nebo číslo bajtu (Binary
soubory režimu), od kterého začíná čtení.
Příklady
Následující příklad načte záznam do testovacího souboru a pak ho načte.
Dim c As Object = "test"
FileSystem.FileOpen(1, "test.dat", OpenMode.Binary)
FileSystem.FilePutObject(1, "ABCDEF")
FileSystem.Seek(1, 1)
FileSystem.FileGetObject(1, c)
MsgBox(c)
FileSystem.FileClose(1)
Poznámky
Funkce FileGetObject
se používá místo FileGet
, aby se zabránilo nejednoznačnostem v době kompilace, pokud je vrácen typ Object
místo jiného typu, například Integer
, Long
, Short
a tak dále.
Pokud chcete typ zapsat Variant
, FileGetObject
je povinný. V případě pochybností, pokud používáte objekt pro druhý parametr, je vždy doporučeno použít FilePutObject
a FileGetObject
.
FileGetObject
je platný pouze v Random
režimu a Binary
.
Data přečtená pomocí FileGetObject
se obvykle zapisuje pomocí FilePutObject
.
První záznam nebo bajt v souboru se nachází na pozici 1, druhý záznam nebo bajt na pozici 2 atd. Pokud vynecháte RecordNumber
, FileGetObject
přečte záznam nebo bajt za poslední FileGetObject
nebo FilePutObject
funkcí (nebo odkazuje na poslední Seek
funkci).
Náhodný režim
Pro soubory otevřené v Random
režimu platí následující pravidla:
Pokud je délka čtených dat menší než délka zadaná v
RecordLength
klauzuliFileOpen
funkce,FileGetObject
přečte následující záznamy o hranicích záznamů. Mezera mezi koncem jednoho záznamu a začátkem dalšího záznamu je vyplněna stávajícím obsahem vyrovnávací paměti souboru. Vzhledem k tomu, že množství dat odsazení nelze přesně určit, je vhodné, aby délka záznamu odpovídala délce přečtených dat.Pokud je proměnnou, do které se čte, řetězec, načte ve výchozím nastavení
FileGetObject
dvoubajtů popisovač obsahující délku řetězce a pak přečte data, která jde do proměnné. Proto délka záznamu určená klauzulíRecordLength
FileOpen
funkce musí být alespoň o dva bajty větší než skutečná délka řetězce. Visual Basic 6.0 a starší verze podporují řetězce s pevnou délkou a při čtení do souboru není popisovač délky zapsán. Pokud chcete číst řetězec bez popisovače, měli byste parametruStringIsFixedLength
předatTrue
a řetězec, do kterého jste načetli, by měl mít správnou délku.Pokud je proměnnou, do které se čte, pole, musí být délka záznamu určená parametrem
RecordLength
veFileOpen
funkci větší nebo rovna součtu všech bajtů potřebných k zápisu dat pole a popisovače pole. Popisovač určuje pořadí pole, velikost a dolní meze každého pořadí. Jeho délka se rovná 2 plus 8násobku počtu dimenzí: 2 + 8 * NumberOfDimensions.Například následující deklarace pole vyžaduje při zápisu pole na disk 218 bajtů:
Dim MyArray(4, 9) As Integer
218 bajtů se distribuuje takto: 18 bajtů pro popisovač (2 + 8 × 2) a 100 bajtů pro data (5 × 10 × 4).
FileGetObject
čte prvky struktur, jako by byly čteny jednotlivě, s tím rozdílem, že mezi prvky neexistuje žádné odsazení. Na disku má předponu dynamické pole v uživatelem definovaném typu (napsané pomocíFilePutObject
) popisovač, jehož délka se rovná 2 plus 8násobek počtu dimenzí: 2 + 8 * NumberOfDimensions. Délka záznamuRecordLength
určená klauzulí veFileOpen
funkci musí být větší nebo rovna součtu všech bajtů potřebných ke čtení jednotlivých prvků, včetně polí a jejich popisovačů. Třídu VBFixedStringAttribute lze použít na řetězcová pole ve strukturách, která označují velikost řetězce při zápisu na disk.
Binární režim
Pro soubory otevřené v Binary
režimu platí všechna Random
pravidla s těmito výjimkami:
Klauzule
RecordLength
FileOpen
ve funkci nemá žádný účinek.FileGetObject
čte všechny proměnné z disku souvisle, to znamená bez odsazení mezi záznamy.Pro jakoukoli jinou matici než pole ve struktuře čte
FileGetObject
pouze data. Není čten žádný popisovač.
FileGetObject
čte řetězce s proměnnou délkou, které nejsou prvky struktur, aniž by očekával popisovač délky dvou bajtů. Počet přečtených bajtů se rovná počtu znaků, které se již v řetězci nacházejí.
Důležité
Během čtení ze souborů se při rozhodování o obsahu souboru neřiďte příponou názvu souboru. Například soubor s názvem Form1.vb nemusí být zdrojovým souborem jazyka Visual Basic.