FileSystem.FilePutObject(Int32, Object, Int64) Yöntem

Tanım

Bir değişkenden disk dosyasına veri yazar. Bu My özellik, dosya G/Ç işlemlerinde FilePutObjectdaha iyi üretkenlik ve performans sağlar. Daha fazla bilgi için bkz. 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)

Parametreler

FileNumber
Int32

Gerekli. Geçerli herhangi bir dosya numarası.

Value
Object

Gerekli. Diske yazılan verileri içeren geçerli değişken adı.

RecordNumber
Int64

Optional. Yazma işleminin başladığı kayıt numarası (Random mod dosyaları) veya bayt numarası (Binary mod dosyaları).

Öznitelikler

Örnekler

Bu örnek, FilePutObject bir dosyaya dize yazmak için işlevini kullanır.

Sub WriteData()
    Dim text As String = "test"
    FileOpen(1, "test.bin", OpenMode.Binary)
    FilePutObject(1, text)
    FileClose(1)
End Sub

Açıklamalar

, FilePutObject , FilePutve benzeri gibi ObjectIntegerbaşka bir tür yerine Long tür Short geçirilirse derleme zamanında belirsizliği önlemek için yerine işlevi kullanılır.

FilePutObject nesnesini tanımlayan tanımlayıcıları yazar ve okur. Türü yazmak Variant istiyorsanız gereklidir FilePutObject . Şüpheniz varsa, ikinci parametre için bir nesne kullanıyorsanız, her zaman ve FilePutObjectkullanmanızı FileGetObject öneririz.

FilePutObjectyalnızca ve Random modunda Binary geçerlidir.

ile FilePutObject yazılan veriler genellikle kullanılarak FileGetObjectbir dosyadan okunur.

Bir dosyadaki ilk kayıt veya bayt 1 konumunda, ikinci kayıt veya bayt 2 konumundadır, vb. atlarsanızRecordNumber, FilePutObject son veya işlevden sonraki kaydı veya baytı (veya FileGetObject son FilePutObject işlevin işaret ettiği Seek kayıt veya bayt) yazar.

Bağımsız değişken, StringIsFixedLength işlevin dizeleri değişken veya sabit uzunluk olarak yorumlayıp yorumlamayacağını denetler. FilePutObject bağımsız değişkeni Trueolduğunda uzunluk tanımlayıcısını yazmaz. ile StringIsFixedLengthkullanıyorsanız = TrueFilePutObject, ile FileGetObjectaynı işlemi yapmanız ve dizenin beklenen uzunlukta başlatıldığından da emin olmanız gerekir.

Rastgele Mod

Modda Random açılan dosyalar için aşağıdaki kurallar geçerlidir:

  • Yazılan verilerin uzunluğu işlevin yan tümcesinde RecordLength belirtilen uzunluktan FileOpen küçükse, FilePutObject sonraki kayıtları kayıt uzunluğu sınırlarına yazar. Bir kaydın sonu ile sonraki kaydın başlangıcı arasındaki boşluk, dosya arabelleğinin mevcut içeriğiyle doldurulur. Doldurma verilerinin miktarı kesin olarak belirlenemediğinden, kayıt uzunluğunun yazılan verilerin uzunluğuyla eşleşmesi genellikle iyi bir fikirdir. Yazılan verilerin uzunluğu işlevin yan tümcesinde RecordLength belirtilen uzunluktan FileOpen büyükse bir özel durum oluşturulur.

  • Yazılan değişken sayısal bir tür içeren bir nesneyse, FilePutObject nesnesini tanımlayan VarType iki bayt yazar ve sonra değişkeni yazar. Örneğin, tamsayı FilePutObject içeren bir nesne yazarken altı bayt yazar: nesneyi (VarType(3)) olarak Integer tanımlayan iki bayt ve verileri içeren dört bayt. İşlevdeki RecordLength parametresi tarafından FileOpen belirtilen kayıt uzunluğu, değişkeni depolamak için gereken gerçek bayt sayısından en az iki bayt daha büyük olmalıdır.

  • Yazılan değişken dize içeren bir nesneyse, FilePutObject nesnesini tanımlayan VarType(8) iki baytlık bir tanımlayıcı, dizenin uzunluğunu belirten iki baytlık bir tanımlayıcı yazar ve ardından dize verilerini yazar. İşlevdeki parametresi tarafından belirtilen kayıt uzunluğu, dizenin RecordLengthFileOpen gerçek uzunluğundan en az dört bayt büyük olmalıdır. Tanımlayıcısı olmayan bir dize koymak istiyorsanız parametresine True geçmeniz StringIsFixedLength gerekir ve okuduğunuz dize doğru uzunlukta olmalıdır.

  • Yazılan değişken bir diziyse, işlevdeki RecordLength yan tümcesi tarafından FileOpen belirtilen kayıt uzunluğu, dizi verilerini ve dizi tanımlayıcısını yazmak için gereken tüm baytların toplamından büyük veya buna eşit olmalıdır. Tanımlayıcı, dizinin derecesini, boyutunu ve her derece için alt sınırları belirtir. Uzunluğu, boyut sayısının 2 artı 8 katına eşittir: (2 + 8 * NumberOfDimensions).

İkili Mod

Modda Binary açılan dosyalar için, aşağıdakiler Random dışında tüm mod kuralları uygulanır:

  • RecordLength İşlevdeki yan tümcesinin FileOpen hiçbir etkisi yoktur. FilePutObject tüm değişkenleri bitişik olarak, yani kayıtlar arasında doldurma olmadan diske yazar.

Şunlara uygulanır

Ayrıca bkz.