PoprzedniaWyżejGłównaSpis treściIndex hasełZnajdźBokGora
BokGora

Google
 

Rozkaz Put

Instrukcja Put zapisuje dane ze zmiennej do pliku dyskowego.

Składnia rozkazu Put:

Put [#]NrPliku, [NrRekordu], NazwaZmiennej

Argument NrPliku jest wymaganym poprawnym numerem pliku.
Argument NrRekordu jest opcjonalną wartością typu Long. Jest to numer rekordu (dla plików otwartych w trybie Random) lub numer bajtu (dla plików otwartych w trybie Binary) od którego zostanie rozpoczęte zapisywanie.
Argument NazwaZmiennej jest wymaganą nazwą zmiennej zawierającej dane, które mają być zapisane na dysk.

Dane zapisane rozkazem Put zwykle są odczytywane rozkazem Get.

Pierwszy rekord lub bajt ma numer 1, drugi 2, itd.
Jeżeli argument NrRekordu zostanie ominięty należy wstawić przecinki separujące. Np:

Put #1,,varBufor

Operacja zapisu zostanie wtedy wykonana na następnym rekordzie lub bajcie, po tym na którym został wykonany ostatni rozkaz Put lub Get lub na pozycji wskazanej przez ostatni rozkaz Seek.

Pliki otwarte w trybie Random
Jeżeli długość danych, które mają zostać zapisane jest mniejsza niż długość wskazana w sekcji Len rozkazu Open, rozkaz Put zapisze następne rekordy na granicy wskazanej długości rekordu. Wolne miejsce między końcem rekordu i początkiem następnego rekordu jest zapełnione bieżącą zawartością bufora plikowego. Ponieważ rozmiar nieokreślonych danych pomiędzy rekordami nie może być na stałe wyznaczony, dobrze jest ustawiać długość rekordu zgodną z długością zapisywanych danych. Jeżeli długość zapisywanych danych jest większa niż długość określona przez sekcję Len rozkazu Open wystąpi błąd.
Jeżeli zmienna, która ma zostać zapisana jest łańcuchem o zmiennej długości, rozkaz Put zapisuje 2-bajtowy opis zawierający długość łańcucha a potem zawartość zmiennej. Długość rekordu określona przez sekcję Len rozkazu Open musi być przynajmniej o 2 bajty większa niż aktualna długość łańcucha.
Jeżeli zmienna zapisywana na dysk jest wartością numeryczną typu Variant, rozkaz Put zapisuje 2 bajty określające typ VarType typu Variant a następnie zapisuje zmienną. Np, jeżeli zapisywana jest zmienna typu Variant o VarType 3, rozkaz Put zapisuje 6 bajtów: 2 bajty określające typ wartości VarType 3(Long) i 4 bajty zawierające dane Long. Długość rekordu określona w sekcji Len rozkazu Open musi być przynajmniej o 2 bajty większa niż aktualna ilość bajtów potrzebna do zapisania zmiennej.

Można używać rozkazu Put aby zapisywać tablice Variant na dysk, ale nie można zapisywać zmiennej typu Variant zawierającej tablicę. Nie można również zapisywać obiektów na dysk.
Jeżeli zmienna, która ma być zapisana jest typu Variant o VarType 8 (String), rozkaz Put zapisuje 2 bajty określające VarType, potem 2 bajty określające długość łańcucha i dopiero zawartość zmiennej. Długość rekordu określona w sekcji Len rozkazu Open musi być przynajmniej o 4 większa niż aktualna długość łańcucha.
Jeżeli zmienna, która ma zostać zapisana jest dynamiczą tablicą, rozkaz Put zapisuje informację o długości równej 2 plus 8 razy liczba wymiarów (2+8*LiczbaWymiarów). Długość rekordu określona w sekcji Len rozkazu Open musi być większa lub równa sumie wszystkich bajtów potrzebnych na zapisanie tablicy na dysk i opisu tablicy. Np:

Dim intTablica (1 To 5, 1 To 10) As Integer

potrzebuje na zapisanie na dysk 118 bajtów (opis:2+8*2[wymiary]=18[bajtów]; zawartość:5*10*2[bajty]=100[bajtów])
Jeżeli zmienna, która ma zostać zapisana na dysk jest tablicą o stałym rozmiarze, rozkaz Put zapisuje tylko dane. Opis nie jest zapisywany na dysk.
Jeżeli zmienna, która ma zostać zapisana jest innego typu zmienną (nie łańcuchem o zmiennej długości lub Variant), rozkaz Put zapisuje na dysk tylko dane. Długość rekordu określona w sekcji Len rozkazu Open musi być większa lub równa długości danych, które mają być zapisane.
Rozkaz Put zapisuje elementy typu użytkownika tak jakby zapisywał każdy z nich osobno, nie rozdziela jednak elementów pustymi (nieokreślonymi) miejscami. Dynamiczna tablica wartości typu użytkownika jest zapisywana na dysk poprzedzona informacją, której długość wynosi 2 plus 8 razy liczba wymiarów (2+8*LiczbaWymiarów). Długość rekordu określona w sekcji Len rozkazu Open musi być większa lub równa sumie bajtów potrzebnych na zapisanie wszystkich elementów typu użytkownika (włączając w to tablice) i opisu tablicy.
Pliki otwarte w trybie Binary
Obowiązują wyszystkie zasady jak dla plików otwartych w trybie Random z wyjątkiem:
Sekcja Len rozkazu Open jest ignorowana. Rozkaz Put zapisuje na dysk ciągle, bez przerw między rekordami.
Dla wszystkich tablic innych niż tablice wartości typu użytkownika, rozkaz Put zapisuje na dysk tylko dane. Informacje na temat tablicy nie są zapisywane.
Rozkaz Put zapisuje łańcuchy o zmiennej długości, które nie są elementami typu użytkownika, bez 2-bajtowego opisu długości. Liczba bajtów zapisywanych jest równa liczbie znaków w łańcuchu. Np:

varString$ = String$(10," ")
Put #1,,varString$

zapisuje 10 bajtów do pliku o numerze 1.

Przykład użycia rozkazu Put:

Dim recRekord As Record  'Record jest typem użytkownika
Open "FILE" For Random As #1 Len=Len(varRekord)  'otwarcie pliku
Put #1,2,varRekord  'zapisanie rekordu na pozycji 2
Close #1  'zamknięcie pliku


(Zmienne, typy zmiennych, funkcja Len, rozkazy Open i Close zostały opisane w innych częściach kursu.


na górę strony...


Google
 
Poprzednia | Wyżej | Strona główna | Spis Treści | Index haseł | Opis VB

BokDol
PoprzedniaWyżejGłównaSpis treściIndex hasełZnajdźBokGora
BokGora