FileSystem.FilePutObject(Int32, Object, Int64) Metoda

Definice

Zapíše data z proměnné do souboru disku. Tato My funkce poskytuje lepší produktivitu a výkon při vstupně-výstupních operacích souborů než FilePutObject. Další informace najdete na webu FileSystem.

[System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("The origin object type could not be statically analyzed and may be trimmed")]
public static void FilePutObject(int FileNumber, object Value, long RecordNumber = -1);
public static void FilePutObject(int FileNumber, object Value, long RecordNumber = -1);
[<System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("The origin object type could not be statically analyzed and may be trimmed")>]
static member FilePutObject : int * obj * int64 -> unit
static member FilePutObject : int * obj * int64 -> unit
Public Sub FilePutObject (FileNumber As Integer, Value As Object, Optional RecordNumber As Long = -1)

Parametry

FileNumber
Int32

Required. Libovolné platné číslo souboru.

Value
Object

Required. Platný název proměnné, který obsahuje data zapsaná na disk.

RecordNumber
Int64

Optional. Číslo záznamu (Random soubory v režimu) nebo bajtové číslo (Binary soubory režimu), na kterých začíná zápis.

Atributy

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čnosti v době kompilace, pokud je typ Object předán místo jiného typu, například Integer, Long, Shorta tak dále.

FilePutObject zapisuje a čte popisovače, které popisují objekt. Pokud chcete typ Variant napsat, FilePutObject je nutné. Pokud máte pochybnosti, pokud používáte objekt pro druhý parametr, doporučujeme, abyste vždy používali FilePutObject a FileGetObject.

FilePutObject je platný pouze v Random režimu a Binary v režimu.

Data zapsaná FilePutObject pomocí souboru se obvykle čtou ze souboru pomocí FileGetObject.

První záznam nebo bajt v souboru je na pozici 1, druhý záznam nebo bajt je na pozici 2 atd. Pokud vynecháte RecordNumber, FilePutObject zapíše další záznam nebo bajt za poslední FileGetObjectFilePutObject nebo funkci (nebo záznam nebo bajt odkazovaný na poslední Seek funkci).

Argument StringIsFixedLength určuje, zda funkce interpretuje řetězce jako proměnnou nebo pevnou délku. FilePutObject nezapisuje popisovač délky, pokud je Trueargument . Pokud používáte s StringIsFixedLength = TrueFilePutObject , musíte provést totéž s FileGetObjecta musíte také zajistit, aby byl ř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ásledné záznamy o hranicích 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í odsazení dat 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á objekt obsahující čí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 obsahující data. Délka záznamu RecordLength zadaná parametrem ve FileOpen funkci musí být alespoň dva bajty větší než skutečný počet bajtů potřebných k uložení proměnné.

  • Pokud je zapisovaná proměnná objekt, který obsahuje řetězec, FilePutObject zapíše dvoubajtů popisovač identifikující VarType(8) objekt, dvoubajtů popisovač označující délku řetězce a zapíše řetězcová data. Délka záznamu RecordLength zadaná parametrem ve FileOpen funkci musí být alespoň čtyři bajty větší než skutečná délka řetězce. Pokud chcete vložit řetězec bez popisovače, měli TrueStringIsFixedLength byste předat parametru 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 zadaná RecordLength klauzulí 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í mez pro každé pořadí. Jeho délka se rovná 2 plus 8násobek počtu dimenzí: (2 + 8 * NumberOfDimensions).

Binární režim

U souborů otevřených v Binary režimu platí všechna Random pravidla režimu s výjimkou:

  • Klauzule RecordLength ve FileOpen funkci nemá žádný vliv. FilePutObject zapíše všechny proměnné na disk souvisle, tj. bez odsazení mezi záznamy.

Platí pro

Viz také