FileSystem.FilePutObject(Int32, Object, Int64) Metodo

Definizione

Scrive i dati da una variabile in un file su disco. La My funzionalità offre una maggiore produttività e prestazioni nelle operazioni di I/O dei file rispetto a FilePutObject. Per altre informazioni, vedere 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)

Parametri

FileNumber
Int32

Required. Qualsiasi numero di file valido.

Value
Object

Required. Nome di variabile valido contenente i dati scritti su disco.

RecordNumber
Int64

Optional. Numero di record (Random file in modalità) o numero di byte (Binary file in modalità) in corrispondenza del quale inizia la scrittura.

Esempio

In questo esempio viene utilizzata la FilePutObject funzione per scrivere una stringa in un file.

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

Commenti

La FilePutObject funzione viene usata invece di per evitare ambiguità in fase di FilePut compilazione se il tipo Object viene passato invece di un altro tipo, ad esempio Integer, Long, Shorte così via.

FilePutObject scrive e legge i descrittori che descrivono l'oggetto. Se si intende scrivere il Variant tipo, FilePutObject è obbligatorio. In caso di dubbio, se si usa un oggetto per il secondo parametro, è consigliabile usare FilePutObject sempre e FileGetObject.

FilePutObject è valido solo in Random modalità e Binary .

I dati scritti con FilePutObject vengono in genere letti da un file usando FileGetObject.

Il primo record o byte in un file si trova nella posizione 1, il secondo record o byte si trova nella posizione 2 e così via. Se si omette RecordNumber, FilePutObject scrive il record o il byte successivo dopo l'ultima FileGetObject funzione o FilePutObject il record o il byte a cui punta l'ultima Seek funzione.

L'argomento StringIsFixedLength controlla se la funzione interpreta le stringhe come lunghezza variabile o fissa. FilePutObject non scrive il descrittore di lunghezza quando l'argomento è True. Se si usa StringIsFixedLength = True con FilePutObject, è necessario eseguire la stessa operazione con FileGetObjecte assicurarsi anche che la stringa venga inizializzata per la lunghezza prevista.

Modalità casuale

Per i file aperti in Random modalità, si applicano le regole seguenti:

  • Se la lunghezza dei dati scritti è minore della lunghezza specificata nella RecordLength clausola della FileOpen funzione, FilePutObject scrive i record successivi sui limiti di lunghezza record. Lo spazio tra la fine di un record e l'inizio del record successivo viene riempito con il contenuto esistente del buffer di file. Poiché non è possibile determinare con precisione la quantità di dati di riempimento, è in genere consigliabile che la lunghezza del record corrisponda alla lunghezza dei dati scritti. Se la lunghezza dei dati scritti è maggiore della lunghezza specificata nella RecordLength clausola della FileOpen funzione, viene generata un'eccezione.

  • Se la variabile scritta è un oggetto contenente un tipo numerico, FilePutObject scrive due byte che identificano l'oggetto VarType dell'oggetto e quindi scrive la variabile. Ad esempio, quando si scrive un oggetto contenente un numero intero, FilePutObject vengono scritti sei byte: due byte che identificano l'oggetto come VarType(3) (Integer) e quattro byte che contengono i dati. La lunghezza del record specificata dal RecordLength parametro nella FileOpen funzione deve essere maggiore di almeno due byte rispetto al numero effettivo di byte necessari per archiviare la variabile.

  • Se la variabile scritta è un oggetto che contiene una stringa, FilePutObject scrive un descrittore a due byte che identifica l'oggetto VarType(8) dell'oggetto, un descrittore a due byte che indica la lunghezza della stringa e quindi scrive i dati stringa. La lunghezza del record specificata dal RecordLength parametro nella FileOpen funzione deve essere almeno quattro byte maggiore della lunghezza effettiva della stringa. Se si vuole inserire una stringa senza il descrittore, è necessario passare True al StringIsFixedLength parametro e la stringa in cui si legge deve essere la lunghezza corretta.

  • Se la variabile scritta è una matrice, la lunghezza del record specificata dalla RecordLength clausola nella FileOpen funzione deve essere maggiore o uguale alla somma di tutti i byte necessari per scrivere i dati della matrice e il descrittore di matrice. Il descrittore specifica il rango della matrice, le dimensioni e i limiti inferiori per ogni rango. La sua lunghezza è uguale a 2 più 8 volte il numero di dimensioni: (2 + 8 * NumberOfDimensions).

Modalità binaria

Per i file aperti in Binary modalità, si applicano tutte le regole di Random modalità, ad eccezione di:

  • La RecordLength clausola nella FileOpen funzione non ha alcun effetto. FilePutObject scrive tutte le variabili su disco in modo contiguo, ovvero senza spaziatura interna tra record.

Si applica a

Vedi anche