Optioneel. Variant (Long). Een recordnummer (bestanden in de modus Random) of bytenummer (bestanden in de modus Binary) waar het schrijven begint.
Varnaam
Vereist. Een naam van de variabele met de gegevens die naar de schijf worden geschreven.
Notities
Gegevens die worden geschreven met Put worden meestal met Get gelezen uit een bestand.
De eerste record of byte in een bestand bevindt zich op positie 1, de tweede record of byte op positie 2, enzovoort. Als u geen recnummer opgeeft, wordt de volgende record of byte geschreven. Dit is de record of byte na de laatste instructie Get of Put, of de record of byte die is aangewezen toen u de functie Seek de laatste keer hebt uitgevoerd. Gebruik komma's als scheidingsteken, bijvoorbeeld:
Put #4,,BestandsBuffer
Voor bestanden die zijn geopend in de modus Random, gelden de volgende regels:
Als de lengte van de gegevens die u wilt schrijven kleiner is dan de lengte in de component Len van de instructie Open, worden met Put ook volgende records vanaf recordlengtebegrenzingen geschreven. De ruimte tussen het einde van de ene record en het begin van de volgende record wordt opgevuld met de inhoud van de bestandsbuffer. Aangezien het moeilijk is om exact te bepalen hoeveel opvulgegevens aanwezig zijn, is het verstandig om een record dezelfde lengte te geven als de gegevens die worden geschreven. Er treedt een fout op als de gegevens langer zijn dan de lengte die u hebt opgegeven in de component Len van de instructie Open.
Als de variabele die wordt geschreven een tekenreeks met variabele lengte is, wordt met Put een descriptor van 2 bytes geschreven die de lengte van de tekenreeks bevat en wordt vervolgens de variabele geschreven. Vervolgens worden de gegevens van de tekenreeks geschreven. De recordlengte zoals aangegeven in de component Len van de instructie Open dient ten minste 2 bytes groter te zijn dan de feitelijke lengte van de tekenreeks.
Als de variabele die wordt geschreven een Variant is van een numeriek type, heeft Put 2 bytes nodig om het VarType van de Variant aan te duiden en wordt vervolgens de variabele geschreven. Bij een Variant van VarType 3, schrijft Put bijvoorbeeld 6 bytes: 2 bytes om de Variant aan te duiden als VarType 3 (Long) en 4 bytes met de Long-gegevens. De recordlengte zoals aangegeven in de component Len van de instructie Open, moet ten minste 2 bytes groter zijn dan het feitelijke aantal bytes dat nodig is om de variabele op te slaan.
Opmerking Met de instructie Put kunt u wel een Variant-matrix naar de schijf schrijven, maar geen scalaire Variant met een matrix. U kunt Put evenmin gebruiken om een object naar de schijf te schrijven.
Als de variabele die wordt geschreven een Variant van VarType 8 (String) is, heeft Put 2 bytes nodig om het VarType aan te duiden en 2 bytes om de lengte van de tekenreeks aan te geven. Vervolgens worden de gegevens van de tekenreeks geschreven. De recordlengte zoals aangegeven in de component Len van de instructie Open dient ten minste 4 bytes groter te zijn dan de feitelijke lengte van de tekenreeks.
Als de variabele die wordt geschreven een dynamische matrix is, schrijft Put een descriptor waarvan de lengte gelijk is aan 2 plus 8 maal het aantal dimensies, dat wil zeggen, 2 + 8 * AantalDimensies. De recordlengte zoals is aangegeven in de component Len van de instructie Open moet groter zijn dan of gelijk zijn aan de som van alle bytes die nodig zijn om de gegevens uit de matrix en de matrixdescriptor te schrijven. De volgende matrixdeclaratie neemt bijvoorbeeld 118 bytes aan schijfruimte in beslag.
Dim MijnMatrix(1 To 5,1 To 10) As Integer
De 118 bytes kunnen als volgt worden herleid: 18 bytes voor de descriptor (2 + 8 * 2) en 100 bytes voor de gegevens (5 * 10 * 2).
Als de variabele die wordt geschreven een matrix is met een vaste lengte, schrijft Put alleen de gegevens. Er wordt geen descriptor naar de schijf geschreven.
Als de variabele die wordt geschreven een ander type variabele is (geen tekenreeks met variabele lengte of een Variant), schrijft Put alleen de variabele gegevens. De recordlengte zoals is aangegeven in de component Len van de instructie Open dient groter of gelijk te zijn aan de lengte van de gegevens die worden geschreven.
Put schrijft de onderdelen van door de gebruiker gedefinieerde typen als afzonderlijke onderdelen. Nu worden echter geen opvulgegevens tussen de onderdelen opgenomen. Als u met Put een dynamische matrix schrijft van een door de gebruiker gedefinieerd gegevenstype, wordt deze voorafgegaan door een descriptor waarvan de lengte gelijk is aan 2 plus 8 maal het aantal dimensies, dat wil zeggen, 2 + 8 * AantalDimensies. De recordlengte zoals aangegeven in de component Len van de instructie Open dient groter te zijn dan of gelijk aan de som van alle bytes die nodig zijn om de afzonderlijke onderdelen, inclusief matrices en descriptors te schrijven.
Voor bestanden die zijn geopend in de modus Binary, gelden alle regels voor Random, met de volgende uitzonderingen:
De component Len van de instructie Open heeft geen enkele invloed. Put schrijft alle variabelen aaneengesloten naar de schijf, dat wil zeggen zonder opvulgegevens tussen de records.
Als de matrix niet van een door de gebruiker gedefinieerd gegevenstype is, schrijft Put alleen de gegevens. In dat geval wordt geen descriptor geschreven.
Put schrijft tekenreeksen met variabele lengte die geen onderdeel zijn van door de gebruiker gedefinieerde typen, zonder de descriptor van 2 bytes. Het aantal bytes dat wordt geschreven is gelijk aan het aantal tekens dat al in de tekenreeks aanwezig is. Uit de volgende instructies kunt u bijvoorbeeld opmaken dat er 10 bytes worden geschreven naar bestand nummer 1: