• Składnia instrukcji Get
Składnia Instrukcji Get
Get [#]numer_pliku, [numer_rekordu], nazwa_zmiennej
Składnia instrukcji Get zawiera następujące elementy:
Element | Opis |
---|---|
numer_pliku |
Element obowiązkowy. Dowolny poprawny numer pliku .
|
numer_rekordu | Element nieobowiązkowy. Wartość typu Variant (Long). Numer rekordu (dla plików otwartych w trybie Random) lub numer bajtu (dla plików otwartych w trybie Binary), od którego rozpoczyna się odczyt. |
nazwa_zmiennej | Element obowiązkowy. Poprawna nazwa zmiennej, do której odczytywane są dane. |
Użycie
Dane odczytane za pomocą instrukcji Get są zwykle zapisywane do pliku za pomocą instrukcji Put.
Na pozycji 1 znajduje się pierwszy rekord lub bajt w pliku, na pozycji 2 znajduje się
drugi rekord lub bajt, i tak dalej. Jeżeli element numer_rekordu zostanie pominięty, odczytany zostanie rekord
wskazywany po ostatniej instrukcji
Get lub Put (lub przez ostatnio wykonaną funkcję Seek).
W ciągu elementów muszą występować przecinki oddzielające od siebie poszczególne elementy, na przykład:
Get #4,,nazwa_zmiennej
Dla plików otwartych w trybie Random zastosowanie mają następujące reguły:
- Jeżeli długość odczytywanych danych jest mniejsza niż długość określona klauzulą Len w instrukcji Open, instrukcja Get odczytuje kolejne rekordy, poczynając od granic wyznaczonych długością rekordu. Przestrzeń pomiędzy końcem jednego rekordu a początkiem następnego jest wypełniana bieżącą zawartością bufora pliku. Ponieważ ilość danych wypełniających nie może być ściśle określona, dobrym pomysłem jest dopasowanie długości odczytywanych danych tak, aby odpowiadały długości rekordu.
- Jeżeli zmienna, do której czytane są dane, jest ciągiem znaków o zmiennej długości, instrukcja Get odczytuje dwubajtowy deskryptor zawierający długość ciągu, po czym odczytuje dane do zmiennej. Dlatego długość rekordu określona w klauzuli Len instrukcji Open musi być większa o co najmniej 2 bajty od faktycznej długości ciągu.
-
Jeżeli zmienna, do której czytane są dane, jest typem numerycznym Variant, instrukcja Get odczytuje 2 bajty
określające wartość VarType dla typu Variant, po czym dana zapisywana jest do zmiennej.
Na przykład, podczas odczytywania zmiennych Variant typu VarType 3, instrukcja Get
odczytuje 6 bajtów:
2 bajty określające zmienną Variant jako typ VarType 3 (Long) i 4 bajty zawierające
dane typu
Long
. Długość rekordu określona klauzulą Len w instrukcji Open musi być o co najmniej 2 bajty większa od faktycznej liczby bajtów niezbędnych do zapisania zmiennej.
Uwaga
Instrukcję Get można używać do odczytu z dysku tablicy typu Variant, ale nie można używać instrukcji Get do odczytu wartości skalarnej typu Variant zawierającej tablicę. Instrukcji Get nie można też wykorzystywać do odczytu obiektów z dysku . - Jeżeli odczytywana wartość jest zmienną Variant typu VarType 8 (String), instrukcja Get odczytuje 2 bajty określające wartość VarType, 2 bajty określające długość ciągu, po czym odczytuje ciąg. Długość rekordu określona klauzulą Len instrukcji Open musi być o co najmniej 4 bajty większa od faktycznej długości ciągu.
-
Jeżeli odczytywana wartość jest tablicą dynamiczną, instrukcja Get odczytuje deskryptor, którego długość równa
jest 2 plus 8 razy liczba wymiarów, czyli 2 + 8 * LiczbaWymiarów. Długość rekordu
określona klauzulą Len instrukcji Open musi być większa lub równa sumie wszystkich bajtów niezbędnych
do odczytania danych z tablicy i deskryptora tablicy. Na przykład, do zapisu zadeklarowanej poniżej tablicy potrzeba 118 bajtów.
Dim MojaTablica(1 To 5,1 To 10) As Integer
Na liczbę 118 bajtów składa się: 18 bajtów na deskryptor (2 + 8 * 2) i 100 bajtów danych (5 * 10 * 2). - Jeżeli odczytywana zmienna jest tablicą o stałym rozmiarze, instrukcja Get odczytuje tylko dane. Nie jest odczytywany żaden deskryptor.
- Jeżeli odczytywana wartość jest zmienną innego typu (nie jest ciągiem znaków o zmiennej długości ani zmienną typu Variant), instrukcja Get odczytuje tylko dane. Długość rekordu określona klauzulą Len instrukcji Open musi być większa lub równa długości odczytywanych danych.
- Instrukcja Get odczytuje elementy typu zdefiniowanego przez użytkownika tak, jak gdyby każdy z nich był odczytywany indywidualnie, z wyjątkiem tego, że nie ma wypełniania przestrzeni między elementami. Tablica dynamiczna typu zdefiniowanego przez użytkownika zapisana na dysku za pomocą instrukcji Put jest poprzedzona deskryptorem, którego długość jest równa 2 plus 8 razy liczba wymiarów, czyli 2 + 8 * LiczbaWymiarów. Długość rekordu określona klauzulą Len instrukcji Open musi być większa lub równa sumie wszystkich bajtów niezbędnych do odczytu poszczególnych elementów, łącznie z tablicami i ich deskryptorami.
Dla plików otwartych w trybie Binary zastosowanie mają wszystkie zasady jakie obowiązują dla trybu Random, z następującymi wyjątkami:
- Zastosowanie klauzuli Len w instrukcji Open nie ma znaczenia. Instrukcja Get odczytuje wszystkie zmienne z dysku w sposób ciągły, czyli bez wypełniania przestrzeni między rekordami.
- W przypadku dowolnej tablicy typu innego niż typ zdefiniowany przez użytkownika instrukcja Get odczytuje tylko dane. Nie jest odczytywany żaden deskryptor.
-
Instrukcja Get odczytuje ciągi znaków zmiennej długości, które nie są elementami typu zdefiniowanego przez
użytkownika, nie oczekując 2-bajtowego deskryptora długości. Liczba odczytywanych bajtów równa się liczbie znaków
w ciągu. Na przykład, poniższe instrukcje odczytują 10 bajtów z pliku otwartego z numerem 1:
strMojaZmienna = Space(10)
Get #1,,strMojaZmienna
Słownik użytych terminów.
- • zmienna
- Opatrzone nazwą miejsce w pamięci do przechowywania danych, które mogą ulegać modyfikacjom w trakcie wykonywania programu. Każda zmienna zaopatrzona jest w unikatową nazwę, która identyfikuje ją w obrębie danego zakresu. Typ danych może być określony lub nie. Nazwy zmiennych muszą zaczynać się literą, muszą być unikatowe w obrębie swego zakresu, nie mogą być dłuższe niż 255 znaków i nie mogą zawierać kropki ani znaku deklarującego typ.
- • numer pliku
- Numer używany przez instrukcję Open podczas otwierania pliku. Dla plików niedostępnych z innych aplikacji należy używać numerów z zakresu od 1 do 255 włącznie, natomiast dla plików dostępnych z innych aplikacji — numerów z zakresu od 256 do 511.
- • instrukcja
- Kompletna składniowo jednostka wyrażająca pojedynczą deklarację, definicję bądź akcję. Na ogół instrukcja zajmuje jeden wiersz, można jednak umieścić w jednym wierszu kilka instrukcji, używając dwukropka (:). Można także użyć znaku kontynuacji wiersza (_), aby wiersz logiczny był kontynuowany w kolejnym wierszu fizycznym.
- • typ numeryczny
- Dowolny, wewnętrzny typ danych numerycznych (Byte, Boolean, Integer, Long, Currency, Single, Double, Date) lub dowolny podtyp numeryczny typu Variant (Empty, Integer, Long, Single, Double, Currency, Decimal, Date, Error, Boolean, Byte).
- • typ danych Long
- Typ danych służący do przechowywania liczb całkowitych na 4 bajtach, o zakresie wartości od -2 147 483 648 do 2 147 483 647. W języku Visual Basic znakiem deklaracji typu odpowiadającym typowi Long jest znak ampersand (&).
- • typ zdefiniowany przez użytkownika
- Dowolny typ danych zdefiniowany za pomocą instrukcji Type. Typy danych zdefiniowane przez użytkownika mogą zawierać jeden lub więcej elementów dowolnego typu. Tablice typów definiowanych przez użytkownika oraz innych typów tworzone są za pomocą instrukcji Dim. Typy zdefiniowane przez użytkownika mogą zawierać tablice dowolnego typu.