FileSystem.FilePutObject(Int32, Object, Int64) Metoda

Definice

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 RecordLength klauzuli FileOpen 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á v RecordLength klauzuli FileOpen 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 jako VarType(3) (Integer) a čtyři bajty, které obsahují data. Délka záznamu určená parametrem RecordLength ve FileOpen 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á parametrem RecordLength ve FileOpen 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ředat True parametru StringIsFixedLength 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 ve FileOpen 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 RecordLengthFileOpen ve funkci nemá žádný účinek. FilePutObject zapisuje všechny proměnné na disk souvisle, tj. bez odsazení mezi záznamy.

Platí pro

Viz také