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, Shortatd.
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 Trueargument . Pokud používáte StringIsFixedLength = True s FilePutObjectnástrojem , musíte provést totéž s FileGetObjecta 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
RecordLengthklauzuliFileOpenfunkce,FilePutObjectzapíš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á vRecordLengthklauzuliFileOpenfunkce, vyvolá se výjimka.Pokud je zapisovaná proměnná objektem, který obsahuje číselný typ,
FilePutObjectzapíše dva bajty identifikujícíVarTypeobjekt a pak zapíše proměnnou. Například při zápisu objektu, který obsahuje celé číslo,FilePutObjectzapíše šest bajtů: dva bajty, které identifikují objekt jakoVarType(3)(Integer) a čtyři bajty, které obsahují data. Délka záznamu určená parametremRecordLengthveFileOpenfunkci 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,
FilePutObjectzapíš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á parametremRecordLengthveFileOpenfunkci 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ředatTrueparametruStringIsFixedLengtha ř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í
RecordLengthveFileOpenfunkci 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
RecordLengthFileOpenve funkci nemá žádný účinek.FilePutObjectzapisuje všechny proměnné na disk souvisle, tj. bez odsazení mezi záznamy.