FileSystem.FilePutObject(Int32, Object, Int64) Methode

Definitie

Hiermee schrijft u gegevens van een variabele naar een schijfbestand. De My functie biedt u betere productiviteit en prestaties in bestands-I/O-bewerkingen dan FilePutObject. Zie FileSystem voor meer informatie.

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)

Parameters

FileNumber
Int32

Required. Elk geldig bestandsnummer.

Value
Object

Required. Geldige variabelenaam die gegevens bevat die naar schijf zijn geschreven.

RecordNumber
Int64

Optional. Recordnummer (Random modusbestanden) of bytenummer (Binary modusbestanden) waarop het schrijven begint.

Voorbeelden

In dit voorbeeld wordt de FilePutObject functie gebruikt om een tekenreeks naar een bestand te schrijven.

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

Opmerkingen

De FilePutObject functie wordt gebruikt in plaats van FilePut om dubbelzinnigheden tijdens het compileren te voorkomen als het type Object wordt doorgegeven in plaats van een ander type, zoals IntegerLong, , Shortenzovoort.

FilePutObject schrijft en leest descriptors die het object beschrijven. Als u van plan bent om het Variant type uit te schrijven, FilePutObject is dit vereist. Als u twijfelt, als u een object gebruikt voor de tweede parameter, raden we u aan altijd te gebruiken FilePutObject en FileGetObject.

FilePutObject is alleen geldig in Random en in de Binary modus.

Gegevens die zijn geschreven met FilePutObject , worden meestal gelezen uit een bestand met behulp van FileGetObject.

De eerste record of byte in een bestand bevindt zich op positie 1, de tweede record of byte bevindt zich op positie 2, enzovoort. Als u weglaat RecordNumber, FilePutObject schrijft u de volgende record of byte na de laatste FileGetObject of FilePutObject functie (of de record of byte waarnaar de laatste Seek functie wijst).

Het StringIsFixedLength argument bepaalt of de functie tekenreeksen interpreteert als variabele of vaste lengte. FilePutObject schrijft de lengtedescriptor niet wanneer het argument is True. Als u StringIsFixedLength = True met FilePutObject, moet u hetzelfde doen met FileGetObject, en u moet er ook voor zorgen dat de tekenreeks wordt geïnitialiseerd tot de verwachte lengte.

Willekeurige modus

Voor bestanden die in Random de modus worden geopend, zijn de volgende regels van toepassing:

  • Als de lengte van de gegevens die worden geschreven kleiner is dan de lengte die is opgegeven in de RecordLength component van de FileOpen functie, FilePutObject schrijft u volgende records op recordlengtegrenzen. De ruimte tussen het einde van de ene record en het begin van de volgende record wordt opgevuld met de bestaande inhoud van de bestandsbuffer. Omdat de hoeveelheid opvullingsgegevens niet nauwkeurig kan worden bepaald, is het over het algemeen een goed idee om de recordlengte overeen te laten komen met de lengte van de gegevens die worden geschreven. Als de lengte van de gegevens die worden geschreven groter is dan de lengte die is opgegeven in de RecordLength component van de FileOpen functie, wordt er een uitzondering gegenereerd.

  • Als de variabele die wordt geschreven een object is dat een numeriek type bevat, FilePutObject schrijft u twee bytes die het VarType object identificeren en schrijft u vervolgens de variabele. Als u bijvoorbeeld een object schrijft dat een geheel getal bevat, FilePutObject schrijft u zes bytes: twee bytes waarmee het object wordt geïdentificeerd als VarType(3) (Integer) en vier bytes die de gegevens bevatten. De recordlengte die is opgegeven door de RecordLength parameter in de FileOpen functie, moet ten minste twee bytes groter zijn dan het werkelijke aantal bytes dat is vereist om de variabele op te slaan.

  • Als de variabele die wordt geschreven een object is dat een tekenreeks bevat, FilePutObject schrijft u een twee-bytedescriptor die het VarType(8) object identificeert, een twee-bytedescriptor die de lengte van de tekenreeks aangeeft en schrijft vervolgens de tekenreeksgegevens. De recordlengte die is opgegeven door de RecordLength parameter in de FileOpen functie, moet ten minste vier bytes groter zijn dan de werkelijke lengte van de tekenreeks. Als u een tekenreeks zonder descriptor wilt plaatsen, moet u de StringIsFixedLength parameter doorgeven True en moet de tekenreeks die u hebt gelezen, de juiste lengte hebben.

  • Als de variabele die wordt geschreven een matrix is, moet de recordlengte die is opgegeven door de RecordLength component in de FileOpen functie groter dan of gelijk zijn aan de som van alle bytes die nodig zijn om de matrixgegevens en de matrixdescriptor te schrijven. De descriptor geeft de rang van de matrix, de grootte en de ondergrenzen voor elke rang aan. De lengte is gelijk aan 2 plus 8 keer het aantal dimensies: (2 + 8 * NumberOfDimensions).

Binaire modus

Voor bestanden die in Binary de modus worden geopend, zijn alle regels voor de Random modus van toepassing, met uitzondering van:

  • De RecordLength component in de FileOpen functie heeft geen effect. FilePutObject schrijft alle variabelen naar de schijf aaneengesloten, dat wil gezegd, zonder opvulling tussen records.

Van toepassing op

Zie ook