FileSystem.FilePutObject(Int32, Object, Int64) Metoda
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Zapisuje dane ze zmiennej do pliku dysku. Ta My funkcja zapewnia lepszą wydajność i wydajność operacji we/wy plików niż FilePutObject. Aby uzyskać więcej informacji, zobacz 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
To jest wymagane. Dowolny prawidłowy numer pliku.
- Value
- Object
To jest wymagane. Prawidłowa nazwa zmiennej, która zawiera dane zapisane na dysku.
- RecordNumber
- Int64
Optional. Liczba rekordów (Random pliki trybu) lub liczba bajtów (Binary pliki trybu), w których rozpoczyna się zapisywanie.
Przykłady
W tym przykładzie użyto FilePutObject funkcji do zapisania ciągu w pliku.
Sub WriteData()
Dim text As String = "test"
FileOpen(1, "test.bin", OpenMode.Binary)
FilePutObject(1, text)
FileClose(1)
End Sub
Uwagi
Funkcja FilePutObject jest używana zamiast FilePut unikać niejednoznaczności w czasie kompilacji, jeśli typ Object jest przekazywany zamiast innego typu, takiego jak Integer, Long, Shorti tak dalej.
FilePutObject zapisuje i odczytuje deskryptory opisujące obiekt. Jeśli zamierzasz zapisać Variant typ, FilePutObject jest wymagany. W razie wątpliwości, jeśli używasz obiektu dla drugiego parametru, zalecamy, aby zawsze używać FilePutObject parametru i FileGetObject.
FilePutObjectjest prawidłowy tylko w Random trybie i .Binary
Dane zapisywane FilePutObject za pomocą polecenia są zwykle odczytywane z pliku przy użyciu polecenia FileGetObject.
Pierwszy rekord lub bajt w pliku znajduje się na pozycji 1, drugi rekord lub bajt znajduje się na pozycji 2 itd.
RecordNumberJeśli pominięto , FilePutObject zapisuje następny rekord lub bajt po ostatniej FileGetObject funkcji lub FilePutObject funkcji (albo rekord lub bajt wskazywany przez ostatnią Seek funkcję).
StringIsFixedLength Argument określa, czy funkcja interpretuje ciągi jako zmienne, czy stałą długość.
FilePutObject nie zapisuje deskryptora długości, gdy argument ma wartość True. Jeśli używasz polecenia StringIsFixedLength = True z elementem FilePutObject, musisz wykonać to samo z elementem FileGetObjecti musisz również upewnić się, że ciąg jest inicjowany do oczekiwanej długości.
Tryb losowy
W przypadku plików otwartych w Random trybie obowiązują następujące reguły:
Jeśli długość zapisywanych danych jest mniejsza niż długość określona w
RecordLengthklauzuliFileOpenfunkcji,FilePutObjectzapisuje kolejne rekordy w granicach długości rekordu. Odstęp między końcem jednego rekordu a rozpoczęciem następnego rekordu jest dopełniany istniejącą zawartością buforu pliku. Ponieważ nie można dokładnie określić ilości danych dopełnienia, zazwyczaj dobrym pomysłem jest, aby długość rekordu była zgodna z długością zapisywanych danych. Jeśli długość zapisywanych danych jest większa niż długość określona wRecordLengthklauzuliFileOpenfunkcji, zgłaszany jest wyjątek.Jeśli zapisywana zmienna jest obiektem zawierającym typ liczbowy,
FilePutObjectzapisuje dwa bajty identyfikująceVarTypeobiekt, a następnie zapisuje zmienną. Na przykład podczas pisania obiektu zawierającego liczbę całkowitąFilePutObjectzapisuje sześć bajtów: dwa bajty identyfikujące obiekt jakoVarType(3)(Integer) i cztery bajty zawierające dane. Długość rekorduRecordLengthokreślona przez parametr wFileOpenfunkcji musi wynosić co najmniej dwa bajty większe niż rzeczywista liczba bajtów wymaganych do przechowywania zmiennej.Jeśli zapisywana zmienna jest obiektem zawierającym ciąg,
FilePutObjectzapisuje deskryptor dwu bajtowy identyfikującyVarType(8)obiekt, deskryptor dwu bajtowy wskazujący długość ciągu, a następnie zapisuje dane ciągu. Długość rekorduRecordLengthokreślona przez parametr wFileOpenfunkcji musi wynosić co najmniej cztery bajty większe niż rzeczywista długość ciągu. Jeśli chcesz umieścić ciąg bez deskryptora, należy przekazaćTruego do parametruStringIsFixedLength, a odczytany ciąg powinien być prawidłową długością.Jeśli zapisywana zmienna jest tablicą, długość rekordu określona przez
RecordLengthklauzulę wFileOpenfunkcji musi być większa lub równa sumie wszystkich bajtów wymaganych do zapisu danych tablicy i deskryptora tablicy. Deskryptor określa rangę tablicy, rozmiar i dolne granice dla każdej rangi. Jego długość wynosi 2 plus 8 razy więcej wymiarów: (2 + 8 * NumberOfDimensions).
Tryb binarny
W przypadku plików otwartych w Binary trybie obowiązują wszystkie Random reguły trybu, z wyjątkiem:
- Klauzula
RecordLengthFileOpenw funkcji nie ma wpływu.FilePutObjectzapisuje wszystkie zmienne na dysku stale, czyli bez uzupełniania między rekordami.