Funzione FilePutObject

Aggiornamento: novembre 2007

Scrive dati da una variabile in un file su disco.

Nelle operazioni di I/O dei file la funzionalità My offre un più elevato livello di produttività e prestazioni rispetto a FilePutObject. Per ulteriori informazioni, vedere Oggetto My.Computer.FileSystem.

Public Sub FilePutObject( _
      FileNumber As Integer, _
      Value As Object, _
      RecordNumber As Integer = -1 _
)
' -or-
Overloads Public Sub FilePutObject( _
      FileNumber As Integer, _
      Value As Short, _
   Optional RecordNumber As Integer = -1 _
)
' -or-
Overloads Public Sub FilePutObject( _
      FileNumber As Integer, _
      Value As Integer, _
   Optional RecordNumber As Integer = -1 _
)
' -or-
Overloads Public Sub FilePutObject( _
      FileNumber As Integer, _
      Value As Single, _
   Optional RecordNumber As Integer = -1 _
)
' -or-
Overloads Public Sub FilePutObject( _
      FileNumber As Integer, _
      Value As Double, _
      RecordNumber As Integer = -1 _
)
' -or-
Overloads Public Sub FilePutObject( _
      FileNumber As Integer, _
      Value As Decimal, _
   Optional RecordNumber As Integer = -1 _
)
' -or-
Overloads Public Sub FilePutObject( _
      FileNumber As Integer, _
      Value As Byte, _
   Optional RecordNumber As Integer = -1 _
)
' -or-
Overloads Public Sub FilePutObject( _
      FileNumber As Integer, _
      Value As Boolean, _
   Optional RecordNumber As Integer = -1 _
)
' -or-
Overloads Public Sub FilePutObject( _
      FileNumber As Integer, _
      Value As Date, _
   Optional RecordNumber As Integer = -1 _
)
' -or-
Overloads Public Sub FilePutObject( _
      FileNumber As Integer, _
      Value As System.Array, _
   Optional RecordNumber As Integer = -1, _
   Optional ArrayIsDynamic As Boolean = False _
)
' -or-
Overloads Public Sub FilePutObject( _
      FileNumber As Integer, _
      Value As String, _
   Optional RecordNumber As Integer = -1, _
   Optional StringIsFixedLength As Boolean = False _
)

Parametri

  • FileNumber
    Obbligatorio. Qualsiasi numero di file valido.

  • Value
    Obbligatorio. Nome di variabile valido contenente dati scritti su disco.

  • RecordNumber
    Facoltativo. Numero di record (file aperti in modalità Random) o di byte (file aperti in modalità Binary) da cui inizia la scrittura.

  • ArrayIsDynamic
    Facoltativo. Valido solo per la scrittura di una matrice. Specifica se la matrice deve essere trattata come dinamica e se scrivere un descrittore di matrice per la stringa di definizione della lunghezza.

  • StringIsFixedLength
    Facoltativo. Valido solo per la scrittura di una stringa. Specifica se scrivere un descrittore per la stringa di definizione della lunghezza. Il valore predefinito è False.

Note

La funzione FilePutObject viene utilizzata al posto di FilePut per evitare ambiguità in fase di compilazione nel caso in cui venga passato il tipo Object anziché un altro tipo, ad esempio Integer, Long, Short e così via.

FilePutObject scrive e legge i descrittori che descrivono l'oggetto. Se si desidera scrivere il tipo Variant, è necessario utilizzare la funzione FilePutObject. In caso di dubbio, se si utilizza un oggetto come secondo parametro, si consiglia di utilizzare sempre FilePutObject e FileGetObject.

FilePutObject è valido solo in modalità Random e Binary.

Per leggere da un file i dati scritti mediante FilePutObject, viene in genere utilizzato FileGetObject.

Il primo record o byte di un file corrisponde alla posizione 1, il secondo alla posizione 2 e così via. Se RecordNumber viene omesso, FilePutObject scriverà il record o il byte successivo all'ultima funzione FileGetObject o FilePutObject oppure il record o il byte indicato dall'ultima funzione Seek.

L'argomento StringIsFixedLength controlla se la funzione interpreta le stringhe a lunghezza variabile o fissa. FilePutObject non scrive il descrittore della lunghezza quando l'argomento è True. Se si utilizza StringIsFixedLength = True con FilePutObject, è necessario seguire lo stesso procedimento con FileGetObject e assicurarsi che la stringa venga inizializzata alla lunghezza prevista.

Modalità Random

Per i file aperti in modalità Random vengono adottati i seguenti criteri:

  • Se la lunghezza dei dati scritti è inferiore alla lunghezza specificata nella clausola RecordLength della funzione FileOpen, FilePutObject scriverà i record successivi entro i limiti della lunghezza dei record. Lo spazio compreso tra la fine di un record e l'inizio del record successivo verrà occupato dal contenuto esistente del buffer del file. Poiché non è possibile stabilire con precisione la quantità di dati immessi per riempire lo spazio, è in genere consigliabile verificare che la lunghezza del record corrisponda a quella dei dati da scrivere. Se la lunghezza dei dati scritti è superiore al valore specificato nella clausola RecordLength della funzione FileOpen, verrà generata un'eccezione.

  • Se la variabile da scrivere è un oggetto contenente un tipo numerico, FilePutObject scriverà due byte che identificano il VarType dell'oggetto e quindi la variabile. Durante la scrittura di un oggetto contenente un valore integer, ad esempio, FilePutObject scrive sei byte: due byte che identificano l'oggetto come VarType(3) (Integer) e quattro byte contenenti i dati. La lunghezza del record specificata dal parametro RecordLength nella funzione FileOpen deve essere maggiore di almeno due byte rispetto al numero effettivo di byte necessari per archiviare la variabile.

  • Se la variabile da scrivere è un oggetto contenente una stringa, FilePutObject scriverà un descrittore a due byte che identifichi il VarType(8) dell'oggetto, un descrittore a due byte che indichi la lunghezza della stringa, quindi i dati della stringa. È quindi necessario che la lunghezza del record specificata dal parametro RecordLength della funzione FileOpen sia maggiore di almeno quattro byte rispetto alla lunghezza effettiva della stringa. Se si desidera inserire una stringa senza descrittore, è necessario passare True al parametro StringIsFixedLength. È inoltre necessario che la lunghezza della stringa letta sia corretta.

  • Se la variabile da scrivere è una matrice, è possibile scegliere di scrivere un descrittore per le dimensioni della matrice. In Visual Basic 6.0 e nelle versioni precedenti è consentito scrivere un descrittore per una matrice dinamica, ma non per una matrice di dimensione fissa. Per impostazione predefinita, in Visual Basic il descrittore non viene scritto. Per scrivere il descrittore, impostare il parametro ArrayIsDynamic su True. Quando si scrive la matrice, è necessario tenere conto delle relative modalità di lettura: se verrà letta con il descrittore, sarà necessario scriverlo. Il descrittore specifica il numero di indici della matrice, la dimensione e i limiti inferiori di ogni indice. La lunghezza è uguale a 2 più 8 volte il numero delle dimensioni: (2 + 8 * NumberOfDimensions). È necessario che la lunghezza del record specificata dalla clausola RecordLength della funzione FileOpen sia superiore o uguale alla somma di tutti i byte richiesti per scrivere i dati e il descrittore della matrice.

Modalità Binary

Per i file aperti in modalità Binary vengono applicate tutte le regole relative alla modalità Random, con le seguenti eccezioni:

  • La clausola RecordLength della funzione FileOpen non ha effetto. FilePutObject scrive tutte le variabili su disco in successione, ossia senza spazi tra i record.

Esempio

Nell'esempio riportato di seguito la funzione FilePutObject viene utilizzata 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

Note per gli sviluppatori di applicazioni per Smart Device

Questa funzione non è supportata.

Requisiti

Spazio dei nomi: Microsoft.VisualBasic

**Modulo:**FileSystem

**Assembly:**Visual Basic Runtime Library (in Microsoft.VisualBasic.dll)

Vedere anche

Riferimenti

Funzione FileGet

Funzione FileOpen

Funzione Seek

Funzione FilePut

Oggetto My.Computer.FileSystem

Altre risorse

Scrittura su file in Visual Basic