Condividi tramite


FileSystem.FilePutObject(Int32, Object, Int64) Metodo

Definizione

Scrive dati da una variabile in un file del disco. La funzionalità My offre un livello più elevato di 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

Obbligatorio. Qualsiasi numero di file valido.

Value
Object

Obbligatorio. Nome di variabile valido che contiene i dati scritti su disco.

RecordNumber
Int64

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

Esempio

In questo esempio viene usata 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 dubbi, 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 del file. Poiché non è possibile determinare con precisione la quantità di dati di spaziatura interna, è 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 che contiene un tipo numerico, FilePutObject scrive due byte che identificano l'oggetto VarType dell'oggetto e quindi scrive la variabile. Ad esempio, durante la scrittura di un oggetto contenente un numero intero, FilePutObject scrive sei byte: due byte che identificano l'oggetto come VarType(3) (Integer) e quattro byte che contengono i dati. La lunghezza del RecordLength record specificata dal 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 contenente 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, è necessario che la lunghezza del record specificata dalla clausola RecordLength della funzione FileOpen sia superiore o uguale alla somma di tutti i byte necessari per scrivere i dati e il descrittore della matrice. Il descrittore specifica il rango della matrice, le dimensioni e i limiti inferiori per ogni rango. La 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 della 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