FileSystem.FileGetObject(Int32, Object, Int64) Yöntem
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
Verileri, açık bir disk dosyasından bir değişken içine okur. Bu My
özellik, dosya G/Ç işlemlerinde FileGetObject
daha iyi üretkenlik ve performans sağlar. Daha fazla bilgi için bkz. FileSystem.
public static void FileGetObject (int FileNumber, ref object Value, long RecordNumber = -1);
static member FileGetObject : int * obj * int64 -> unit
Public Sub FileGetObject (FileNumber As Integer, ByRef Value As Object, Optional RecordNumber As Long = -1)
Parametreler
- FileNumber
- Int32
Gereklidir. Herhangi bir geçerli dosya numarası.
- Value
- Object
Gereklidir. Verinin içine okunduğu geçerli değişken adı.
- RecordNumber
- Int64
İsteğe bağlı. Okumanın başladığı kayıt numarası (Random
mod dosyaları) veya bayt numarası (Binary
mod dosyaları).
Örnekler
Aşağıdaki örnek, bir kaydı bir test dosyasına okur ve ardından alır.
Dim c As Object = "test"
FileSystem.FileOpen(1, "test.dat", OpenMode.Binary)
FileSystem.FilePutObject(1, "ABCDEF")
FileSystem.Seek(1, 1)
FileSystem.FileGetObject(1, c)
MsgBox(c)
FileSystem.FileClose(1)
Açıklamalar
, FileGetObject
, Short
, vb. gibi Long
Integer
başka bir tür yerine FileGet
tür Object
döndürülürse derleme zamanında belirsizliklerden kaçınmak yerine işlevi kullanılır.
Türü yazmak Variant
istiyorsanız gereklidir FileGetObject
. Şüpheniz varsa, ikinci parametre için bir nesne kullanıyorsanız, her zaman ve FileGetObject
kullanmanız FilePutObject
önerilir.
FileGetObject
yalnızca ve Binary
modunda Random
geçerlidir.
ile FileGetObject
okunan veriler genellikle ile FilePutObject
yazılır.
Bir dosyadaki ilk kayıt veya bayt, 1 konumunda, ikinci kayıt veya bayt, 2 konumunda ve benzeri şekildedir. atlarsanız RecordNumber
, FileGetObject
kaydı veya baytı son FileGetObject
veya FilePutObject
işlevden sonra okur (veya son Seek
işlev tarafından işaret edilir).
Rastgele Modu
Modda Random
açılan dosyalar için aşağıdaki kurallar geçerlidir:
Okunan verilerin uzunluğu işlevin yan tümcesinde
RecordLength
belirtilen uzunluktanFileOpen
küçükse,FileGetObject
kayıt uzunluğu sınırlarında sonraki kayıtları okur. 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ı tam olarak belirlenemediğinden, kayıt uzunluğunun okunan verilerin uzunluğuyla eşleşmesi iyi bir fikirdir.içinde okunan değişken bir dizeyse, varsayılan olarak
FileGetObject
dize uzunluğunu içeren iki baytlık tanımlayıcıyı okur ve ardından değişkene giden verileri okur. Bu nedenle, işlevin yan tümcesi tarafındanRecordLength
belirtilen kayıt uzunluğu, dizeninFileOpen
gerçek uzunluğundan en az iki bayt büyük olmalıdır. Visual Basic 6.0 ve önceki sürümler sabit uzunlukta dizeleri destekler ve dosyaya okunduğunda uzunluk tanımlayıcısı yazılmaz. Tanımlayıcısı olmayan bir dizeyi okumak istiyorsanız parametresineStringIsFixedLength
geçmenizTrue
ve okuduğunuz dizenin doğru uzunlukta olması gerekir.içinde okunan değişken bir diziyse, işlevdeki
FileOpen
parametresi tarafındanRecordLength
belirtilen kayıt uzunluğu, dizi verilerini ve dizi tanımlayıcısını yazmak için gereken tüm baytların toplamına eşit veya ondan büyük olmalıdır. Tanımlayıcı, her bir derece için dizi derecesi, boyutu ve alt sınırı belirtir. Uzunluğu, boyut sayısının 2 artı 8 katına eşittir: 2 + 8 * NumberOfDimensions.Örneğin, dizi diske yazıldığında aşağıdaki dizi bildirimi 218 bayt gerektirir:
Dim MyArray(4, 9) As Integer
218 bayt aşağıdaki gibi dağıtılır: Tanımlayıcı için 18 bayt (2 + 8 * 2) ve veriler için 100 bayt (5 * 10 * 4).
FileGetObject
öğeler arasında doldurma olmaması dışında, yapıların öğelerini her biri ayrı ayrı okunuyormuş gibi okur. Diskte, kullanıcı tanımlı bir türdeki (ileFilePutObject
yazılmış) dinamik bir dizi, uzunluğu boyut sayısının 2 artı 8 katına eşit olan bir tanımlayıcının ön ekini alır: 2 + 8 * NumberOfDimensions. İşlevdekiFileOpen
yan tümcesiRecordLength
tarafından belirtilen kayıt uzunluğu, diziler ve tanımlayıcıları da dahil olmak üzere tek tek öğeleri okumak için gereken tüm baytların toplamından büyük veya buna eşit olmalıdır. Sınıf, VBFixedStringAttribute diske yazıldığında dize boyutunu göstermek için yapılardaki dize alanlarına uygulanabilir.
İkili Mod
Modda Binary
Random
açılan dosyalar için tüm kurallar geçerli olur ve bu özel durumlar dışında:
RecordLength
İşlevdeki yan tümcesininFileOpen
hiçbir etkisi yoktur.FileGetObject
diskten tüm değişkenleri bitişik olarak, yani kayıtlar arasında doldurma olmadan okur.Yapıdaki bir dizi dışında herhangi bir
FileGetObject
dizi için yalnızca verileri okur. Hiçbir tanımlayıcı okunmuyor.
FileGetObject
iki baytlık uzunluk tanımlayıcısını beklemeden yapıların öğesi olmayan değişken uzunlukta dizeleri okur. Okunan bayt sayısı dizedeki karakter sayısına zaten eşittir.
Önemli
Dosyadan okurken, dosya adı uzantısına bağlı olarak dosyanın içeriği hakkında kararlar vermeyin. Örneğin, Form1.vb adlı bir dosya Visual Basic kaynak dosyası olmayabilir.