Promotic

FileBinaryRead - metoda objektu Pm

Popis:
Čtení obsahu binárního souboru do proměnné typu Array (do pole hodnot).
Tato metoda je zastaralá (ale funkční) a je lepší použít metodu PmBuffer.LoadFromFile.
Syntaxe:
Long FileBinaryRead(String sFile, Long nOffset, Long nAttr, Variant Values)
Parametry:
sFile(String) Název souboru s cestou.
Pokud není zadána celá cesta, pak se doplní relativně k složce aplikace.
Je doporučeno použít cestu v syntaxi PROMOTIC - viz PROMOTIC cesta k souborům nebo složkám.
nOffset(Long) Bajtový offset (posun), který nastaví počátek čtení z binárního souboru (např. 10 znamená čtení od 10. bajtu souboru).
nAttr(Long) Bitový atribut. Může být 0 nebo součet vhodných následujících hodnot:
1 - Příznak, že není znám počet ani typ načítaných dat. Metoda v tom případě vytvoří v parametru Values nové pole o délce rovné DÉLKA_SOUBORU - OFFSET, jehož položky budou typu Byte.
Pokud hodnota 1 není zadána, pak parametr Values musí být před voláním nastaven na datový typ pole (Array). Pak se data načítají ze souboru do pole postupně podle datových typů položek tohoto pole.
2 - Příznak, jak se má číst textový řetězec (String), tzn. jak se má určit jeho délka. Pokud tato hodnota je zadána, pak se předpokládá, že v položce pole Values je již textový řetězec určité délky. Ze souboru se pak čte pro tuto položku tolik znaků, kolik ji má i tento vstupní řetězec (tento vstupní řetězec je tedy přepsán stejným počtem znaků ze souboru). V tom případě by se však v souboru na místě, které se považuje za takový text, neměla objevit hodnota binární 0.
Pokud tato hodnota není zadána, pak se do položky typu String čtou znaky ze souboru tak dlouho, až se narazí na bajt s hodnotou 0.
Data v podobě textového řetězce (string) lze číst pouze pokud v parametru nAttr není nastavena hodnota 1.
Values(Variant) Proměnná typu Array, do které se mají načítat binární data.
Vrácená hodnota:
Vrací počet načtených bajtů (Upozornění: ne počet položek!). Pokud nastala jakákoli chyba, pak metoda vrací záporné číslo.
Poznámka:
Pokud není nastaven nAttr=1, pak je potřeba před voláním metody nastavit datový typ položek pole pomocí VBScript funkcí CByte, CInt, CLng, CSng, CDbl, atd. Podle nastaveného datového typu pak metoda pozná, kolik bajtů má do položky načítat.
Jednotlivé položky pole se načítají podle svého datového typu takto:
Datový typ: Počet načítaných bajtů ze souboru:
Byte 1
Integer 2
Long 4
Date 8
Bool 1
Single 4
Double 8
String počet znaků + 1 (1 pro znak 0, pouze pokud není nastaveno nAttr=2)


Tato metoda není funkční ve Web obrazech.
Příklad1:
Čtení ze souboru do proměnné Val o 3 položkách. Čte se od začátku souboru.
První bajt se uloží do 1. položky typu Byte,
další 4 bajty se uloží do 2. položky typu Long
a dalších 5 bajtůse uloží jako textový řetězec (String).
VBScriptVyber a zkopíruj do schránky

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 "Data úspěšně načtena. Následuje výpis položek:"
Pm.Debug Val, 1
Else
Pm.Debug "Data se nepodařilo načíst! Length=" & Length
End If
Příklad2:
Čtení ze souboru do proměnné Val. Metoda tuto proměnnou nastaví na pole bajtů (Array položek typu Byte) o počtu daném velikosti souboru.
VBScriptVyber a zkopíruj do schránky

Dim Length, Val

Length = Pm.FileBinaryRead("#data:File.bin", 0, 1, Val)
If Length > 0 Then
Pm.Debug "Data úspěšně načtena. Následuje výpis položek:"
Pm.Debug Val, 1
Else
Pm.Debug "Data se nepodařilo načíst! Length=" & Length
End If

Historie:
Pm8.01.10: pokud bylo dat v souboru méně než požadováno, pak se četly náhodné hodnoty.
Navigace:
 
- Pm
 
- Abs
- Cos
- E
- Exp
- FileBinaryRead
 
 
- LN2
- PI
- Pow
- Sin
- Tan
© MICROSYS, spol. s r.o.