FileSystem.FilePutObject(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í.
Zapisuje data z proměnné na soubor na disku. Tato My
funkce poskytuje vyšší produktivitu a výkon při vstupně-výstupních operacích souborů než FilePutObject
. Další informace naleznete v tématu FileSystem.
public static void FilePutObject (int FileNumber, object Value, long RecordNumber = -1);
static member FilePutObject : int * obj * int64 -> unit
Public Sub FilePutObject (FileNumber As Integer, 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é, která obsahuje data zapsaná na disk.
- RecordNumber
- Int64
Nepovinný parametr. Číslo záznamu (Random
soubory režimu) nebo číslo bajtu (Binary
soubory režimu), od kterého začíná zápis.
Příklady
Tento příklad používá FilePutObject
funkci k zápisu řetězce do souboru.
Sub WriteData()
Dim text As String = "test"
FileOpen(1, "test.bin", OpenMode.Binary)
FilePutObject(1, text)
FileClose(1)
End Sub
Poznámky
Funkce FilePutObject
se používá místo FilePut
toho, aby se zabránilo nejednoznačnostem v době kompilace, pokud je předán typ Object
místo jiného typu, například Integer
, Long
, Short
atd.
FilePutObject
zapisuje a čte popisovače, které popisují objekt. Pokud chcete typ zapsat Variant
, FilePutObject
je povinný. Pokud v případě pochybností používáte objekt pro druhý parametr, doporučujeme vždy použít FilePutObject
a FileGetObject
.
FilePutObject
je platný pouze v Random
režimu a Binary
.
Data zapsaná pomocí FilePutObject
se obvykle čtou ze souboru pomocí FileGetObject
.
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
, FilePutObject
zapíše další záznam nebo bajt za poslední FileGetObject
nebo FilePutObject
funkci (nebo záznam nebo bajt, na který odkazuje poslední Seek
funkce).
Argument StringIsFixedLength
určuje, jestli funkce interpretuje řetězce jako proměnné nebo pevnou délku. FilePutObject
nezapíše popisovač délky, pokud je True
argument . Pokud používáte StringIsFixedLength
= True
s FilePutObject
nástrojem , musíte provést totéž s FileGetObject
a také se ujistěte, že je řetězec inicializován na očekávanou délku.
Náhodný režim
Pro soubory otevřené v Random
režimu platí následující pravidla:
Pokud je délka zapisovaných dat menší než délka zadaná v
RecordLength
klauzuliFileOpen
funkce,FilePutObject
zapíše následující záznamy na hranice délky záznamů. Mezera mezi koncem jednoho záznamu a začátkem dalšího záznamu je vyplněna existujícím obsahem vyrovnávací paměti souboru. Vzhledem k tomu, že množství dat odsazení nelze přesně určit, je obecně vhodné, aby délka záznamu odpovídala délce zapisovaných dat. Pokud je délka zapisovaných dat větší než délka zadaná vRecordLength
klauzuliFileOpen
funkce, vyvolá se výjimka.Pokud je zapisovaná proměnná objektem, který obsahuje číselný typ,
FilePutObject
zapíše dva bajty identifikujícíVarType
objekt a pak zapíše proměnnou. Například při zápisu objektu, který obsahuje celé číslo,FilePutObject
zapíše šest bajtů: dva bajty, které identifikují objekt jakoVarType(3)
(Integer
) a čtyři bajty, které obsahují data. Délka záznamu určená parametremRecordLength
veFileOpen
funkci musí být alespoň o dva bajty větší než skutečný počet bajtů potřebných k uložení proměnné.Pokud je zapisovaná proměnná objektem, který obsahuje řetězec,
FilePutObject
zapíše dvoubajtů popisovač identifikujícíVarType(8)
objekt, dvoubajtů popisovač označující délku řetězce a pak zapíše řetězcová data. Délka záznamu určená parametremRecordLength
veFileOpen
funkci musí být alespoň o čtyři bajty větší než skutečná délka řetězce. Pokud chcete vložit řetězec bez popisovače, měli byste předatTrue
parametruStringIsFixedLength
a řetězec, do kterého jste načetli, by měl mít správnou délku.Pokud je zapisovaná proměnná matice, musí být délka záznamu určená klauzulí
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ásobek počtu dimenzí: (2 + 8 * NumberOfDimensions).
Binární režim
Pro soubory otevřené v Binary
režimu platí všechna Random
pravidla režimu s výjimkou:
- Klauzule
RecordLength
FileOpen
ve funkci nemá žádný účinek.FilePutObject
zapisuje všechny proměnné na disk souvisle, tj. bez odsazení mezi záznamy.