Promotic
WikipediaLinkedInYoutubeTwitterFacebook

FileBinaryRead - metoda obiektu Pm

Opis:
Wczytanie zawartości pliku binarnego do zmiennej typu Array (do tablicy wartości).
Składnia:
FileBinaryRead(sFile As String, nOffset As Long, nAttr As Long, Values As Variant) As Long
Wołanie:
n = Pm.FileBinaryRead(sFile, nOffset, nAttr, Values)
Parametry:
sFile(String) Nazwa pliku ze ścieżką. Jeżeli nie jest wprowadzona pełna ścieżka, wtedy zostanie uzupełniona względnie w stosunku do foldera aplikacji.

Zalecanym jest stosowanie ścieżki w składni PROMOTIC - patrz PROMOTIC ścieżka do plików lub folderów.

nOffset(Long) Offset bajtowy (przesunięcie), który ustawi początek odczytu z pliku binarnego (np. 10 oznacza odczyt od 10. bajta pliku).
nAttr(Long) Atrybut bitowy. Może mieć wartość 0 lub sumę odpowiednich następujących wartości:
1 - Znacznik, że nie jest znana ilość ani typ wczytanych danych. W tym przypadku metoda wytworzy w parametrze Values nową tablicę o długości równej DŁUGOŚĆ_PLIKU - OFFSET, którego elementy będą typu Byte.

Jeżeli wartość 1 nie jest określona, wtedy parametr Values musi być przed wywołaniem metody ustawiony na typ danych tablica (Array). W tej sytuacji dane są wczytywane z pliku do tablicy kolejno według typu danych pozycji owej tablicy.

2 - Znacznik, w jaki sposób ma być wczytywany łańcuch tekstowy (String), tzn. w jaki sposób ma zostać określona jego długość. Jeżeli wartość jest określona, wtedy jest przyjęte, że pod pozycją tablicy Values już znajduje się łańcuch tekstowy okreżlonej długości. Z pliku jest dla tej pozycji odczytywana taka ilość znaków, ile ma również wejściowy łańcuch (łańcuch wejściowy zostaje więc przepisany tą samą ilością znaków z pliku). W tym przypadku na miejscu, które jest uważane za taki tekst, nie powinna wystąpić wartość binarne 0.

Jeżeli opisywana wartość nie jest określona, wtedy do pozycji typu String są odczytywane znaki z pliku tak długo, dopóki nie zostanie odnaleziony bajt o wartości 0.

Dane w postaci łańcucha tekstowego (string) można odczytywać tylko jeżeli w parametrze nAttr nie jest ustawiona wartość 1.

Values(Variant) Zmienna typu Array, do której mają zostać wczytane dane binarne.
Wartość zwrotna:
Zwraca ilość wczytanych bajtów (Uwaga, nie ilość pozycji!). Jeżeli doszło do jakiegokolwiek błędu, wtedy metoda zwraca liczbę ujemną.
Notatka:

Jeżeli nie jest ustawiony nAttr=1, wtedy przed wywołaniem metody jest konieczne ustawienie typu danych pozycji tablicy przy pomocy VBScript funkcji CByte, CInt, CLng, CSng, CDbl, itd. Według ustawionego typu danych metoda stwierdzi, ile bajtów ma zostać wczytanych do pozycji.

Poszczególne pozycje tablicy zostaną wczytane według swojego typu danych następująco:

Typ danych: Ilość wczytanych bajtów z pliku:
Byte 1
Integer 2
Long 4
Date 8
Bool 1
Single 4
Double 8
String Ilość znaków + 1 (1 dla znaku 0, tylko jeżeli nie jest ustawione nAttr=2)
 
Metoda ta nie działa w panelach w języku JavaScript (dlatego nie działa również w Web panelach).
Przykład1:
Odczyt z pliku do zmiennej Val o 3 pozycjach. Odczyt jest wykonywany od początku pliku. Pierwszy bajt jest zapisywany pod 1. pozycją typu daych Byte, następne 4 bajty są zapisane pod 2. pozycją typu danych Long a następnych 5 bajtów jest zapisanych jako łańcuch tekstowy (String).
VBScriptWybierz oraz skopiuj do schowka

Dim Length, Val

Val = Array(CByte(0), CLng(0), "12345")
Length = Pm.FileBinaryRead("#data:File.bin", 0, 2, Val)

If Length = 1+4+5 Then
  Pm.Debug "Dane poprawnie odczytan. Następuje wypis pozycji:"
  Pm.Debug Val, 1
Else
  Pm.Debug "Danych nie udało się wczytać! Lenght=" & Length
End If
Przykład2:
Odczyt z pliku do zmiennej Val. Metoda ustawi zmienną na tablicę bajtów (Array pozycji typu Byte) o ilości określonej przez wielkość pliku.
VBScriptWybierz oraz skopiuj do schowka

Dim Length, Val

Length = Pm.FileBinaryRead("#data:File.bin", 0, 1, Val)
If Length > 0 Then
  Pm.Debug "Dane poprawnie odczytan. Następuje wypis pozycji:"
  Pm.Debug Val, 1
Else
  Pm.Debug "Danych nie udało się wczytać! Lenght=" & Length
End If
Navigacja:
 
- Pm
 
- Abs
- Cos
- E
- Exp
- FileBinaryRead
 
 
- LN2
- PI
- Pow
- Sin
- Tan
© MICROSYS, spol. s r. o.Tavičská 845/21 703 00 Ostrava-Vítkovice