Promotic

FileBinaryRead - metoda obiektu Pm

Opis:
Odczyt zawartości pliku binarnego do zmiennej typu Array (do tablicy wartości).
Niniejsza metoda jest przestarzała (lecz funkcjonalna) oraz dogodniejszym jest zastosowanie metody PmBuffer.LoadFromFile.
Składnia:
Long FileBinaryRead(String sFile, Long nOffset, Long nAttr, Variant Values)
Parametry:
sFile(String) Nazwa pliku ze ścieżką.
Jeżeli nie jest wprowadzona pełna ścieżka, wtedy zostanie uzupełniona względem do foldera aplikacji.
Jest zalecane 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 pozycje 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 tablicy (Array). W tej sytuacji dane są wczytywane z pliku do tablicy kolejno według typów 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 formie ł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 powstał jakikolwiek błąd, wtedy metoda zwraca liczbę ujemną.
Notatka:
Jeżeli nie jest ustawiony nAttr=1, wtedy przed przed wywołaniem 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 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 Byte,
następne 4 bajty są zapisane pod 2. pozycją typu Long
a następnych 5 bajtówjest zapisanych jako łańcuch tekstowy (String).
VBScriptWybierz oraz skopiuj do schowka

Dim Length, Val

Val = Pm.Array1(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ć! Length=" & 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ć! Length=" & Length
End If

Historia:
Pm8.01.10: jeżeli w pliku było mniej wartości niż wymagano, wtedy zostały wczytane wartości losowe.
Nawigacja:
 
- Pm
 
- Abs
- Cos
- E
- Exp
- FileBinaryRead
 
 
- LN2
- PI
- Pow
- Sin
- Tan
© MICROSYS, spol. s r.o.