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

Google
 

Rozkaz Get

Instrukcja Get odczytuje dane z pliku dyskowego do zmiennej.

Składnia rozkazu Get:

Get [#]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 odczytywanie.
Argument NazwaZmiennej jest wymaganą nazwą zmiennej do której mają zostać przekazane odczytane dane z dysku.

Dane czytane rozkazem Get zwykle są zapisywane rozkazem Put.

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

Get #1,,varBufor

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

Pliki otwarte w trybie Random
Jeżeli długość danych, które mają zostać odczytane jest mniejsza niż długość wskazana w sekcji Len rozkazu Open, rozkaz Get odczyta następne rekordy w granicach 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ą odczytywanych danych.
Jeżeli zmienna, która ma zostać odczytana jest łańcuchem o zmiennej długości, rozkaz Get odczytuje 2-bajtowy opis zawierający długość łańcucha a potem czyta dane, które są przekazane do 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 odczytywana z dysku jest wartością numeryczną typu Variant, rozkaz Get odczytuje 2 bajty określające typ VarType typu Variant a następnie dane, które przekazuje do zmiennej. Np, jeżeli odczytywana jest zmienna typu Variant o VarType 3, rozkaz Get odczytuje 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 przechowywania zmiennej.

Można używać rozkazu Get aby odczytywać tablice Variant z dysku, ale nie można używać rozkazu Get aby odczytywać zmienne typu Variant zawierającej tablicę. Nie można również odczytywać obiektów z dysku.
Jeżeli zmienna, która ma być odczytana jest typu Variant o VarType 8 (String), rozkaz Get odczytuje 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ć odczytana jest dynamiczą tablicą, rozkaz Get odczytuje 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 odczytanie 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ć odczytana z dysku jest tablicą o stałym rozmiarze, rozkaz Get odczytuje tylko dane. Opis nie jest odczytywany z dysku.
Jeżeli zmienna, która ma zostać odczytana jest innego typu zmienną (nie łańcuchem o zmiennej długości lub Variant), rozkaz Get odczytuje z dysku 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ć odczytane.
Rozkaz Get odczytuje elementy typu użytkownika tak jakby odczytywał każdy z nich osobno, tak jakby nie były rozdzielone pustymi (nieokreślonymi) miejscami. Dynamiczna tablica wartości typu użytkownika (zapisana przez Put) jest odczytywana z dysku z poprzedzającą 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 odczytanie 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 Get odczytuje z dysku ciągle, bez przerw między rekordami.
Dla wszystkich tablic innych niż tablice wartości typu użytkownika, rozkaz Get odczytuje z dysku tylko dane. Informacje na temat tablicy nie są czytane.
Rozkaz Get odczytuje ł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 odczytywanych jest równa liczbie znaków w łańcuchu. Np:

varString = String(10," ")
Get #1,,varString

odczytuje 10 bajtów z pliku o numerze 1.

Przykład użycia rozkazu Get:

Dim recRekord As Record  'Record jest typem użytkownika
Open "FILE" For Random As #1 Len=Len(varRekord)  'otwarcie pliku
Get #1,2,varRekord  'odczytanie 2 rekordu z pliku
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