Promotic

Obiekt PmBuffer (Pamięć danych binarnych)

Opis:
Obiekt przedstawia wartości binarne w bloku danych.
Blok danych (buffer) to ciągły obszar w pamięci.
Do odczytu/zapisu pojedyńczej wartości jest konieczne znać jej pozycję (offset) w bloku danych oraz jej typ danych (wielkość).
Ogólne właściwości i metody:
AutoOffsetWewnętrzna automatyczna pozycja w bloku danych
SetSizeUstawienie wielkości bloku danych
GetSizeStwierdzi wielkośc bloku danych
GetLastErrorZwraca znacznik ostatniego błędu
SetBufferZapis bloku danych w formie obiektu PmBuffer
GetBufferOdczyt bloku danych w formie obiektu PmBuffer
SetPtrZapis markera (pointera, adresu) na inny blok danych w formie obiektu PmBuffer
GetPtrPozorny odczyt, (przeskoczenie) markera (pointer) na inny blok danych
LoadFromFileOdczyt wartości z pliku binarnego do bloku danych
SaveToFileZapis wartości z bloku danych do pliku binarnego
CalcCheckSumZwraca sumy kontrolnej (hash) bloku danych
Metody do zapisu oraz odczytu wartości liczbowej:
SetBitZapis jednego bitu
GetBitOdczyt wartości jednego bitu
SetInt8Zapis 1-bajtowej wartości całkowitej
GetInt8Odczyt 1-bajtowej wartości całkowitej
SetInt16Zapis 2-bajtowej wartości całkowitej
GetInt16Odczyt 2-bajtowej wartości całkowitej
SetInt32Zapis 4-bajtowej wartości całkowitej
GetInt32Odczyt 4-bajtowej wartości całkowitej
SetUint8Zapis 1-bajtowej wartości całkowitej bez znaku
GetUint8Odczyt 1-bajtowej wartości bez znaku
SetUint16Zapis 2-bajtowej wartości całkowitej bez znaku
GetUint16Odczyt 2-bajtowej wartości całkowitej bez znaku
SetUint32Zapis 4-bajtowej wartości całkowitej bez znaku
GetUint32Odczyt 4-bajtowej wartości całkowitej bez znaku
SetFloat32Zapis 4-bajtowej wartości rzeczywistej
GetFloat32Odczyt 4-bajtowej wartości rzeczywistej
SetFloat64Zapis 8-bajtowej wartości rzeczywistej
GetFloat64Odczyt 8-bajtowej wartości rzeczywistej
Metody do zapisu oraz odczytu wartości typu String:
SetStringFixZapis łańcucha tekstowego o stałej długości
GetStringFixOdczyt łańcucha tekstowego o stałej długości
SetStringVarZapis łańcucha tekstowego o zmiennej długości (zakończony znakiem NULL)
GetStringVarOdczyt łańcucha tekstowego o zmiennej długości (zakończony znakiem NULL)
SetHexaStringZapis bloku danych w formie HexaString
GetHexaStringOdczyt bloku danych w formie HexaString
SetBase64StringZapis bloku danych w formie łańcucha tekstowego w kodowaniu Base64
GetBase64StringOdczyt bloku danych w formie łańcucha tekstowego w kodowaniu Base64
Notatka:
- Obiekt można wytworzyć przy pomocy metody Pm.CreatePmBuffer.
- Obiekt ten działa również w Web panelach.

Porównanie obiektów w celu trzymania wartości:
Następujące typy obiektów są przeznaczone do trzymania wartości (dowolnego typu danych). Każdy z tych obiektów ma swoje zalety oraz mankamenty a wybór jest zależny od wymaganego zastosowania.
PmArray: Obiekt ten zawiera wartości, które są dostępne indeksem do tablicy - czyli w dowolnej chwili można odczytać dowolną wartość w tym obiekcie. Odczyt oraz zapis wartości jest bardzo szybkie, dodanie wartości jest wszak wolne.
Obiekt ten działa tylko dla języka JavaScript, dla języka VBScript tablica jest w formie typu danych Array.
PmMap: Obiekt ten zawiera wartości, które są dostępne przy pomocy swej nazwy (identyfikator tekstowy). Nazwy tych wartości przedstawiają właściwości obiektu. Zaletą jest, że dzięki nazwom kod w skrypcie jest bardziej "zrozumiały". Mankamentem jest brak możliwości przystępowania do wartości w cyklu, kiedy należy pozyskiwać wartości przy pomocy indeksu.
PmBuffer: Obiekt ten zawiera wartości binarne w bloku danych. Dla zapisu/odczytu pojedyńczej wartości jest konieczne znać jej pozycję (offset) w bloku danych oraz również jej typ danych (wielkość).
Przykład1:
JavaScriptWybierz oraz skopiuj do schowka

var oBuf = Pm.CreatePmBuffer();
// Ustawienie całej zawartości bloku danych jako HexaString oraz następnie kolejny odczyt jego zawartości do 3 zmiennych o różnych typach
var s1 = "40302010605070";   // HexaString zawiera 7 bajtów z wartościami 0x40,0x30,0x20,0x10,0x60,0x50,0x70
oBuf.SetHexaString(-2, s1);   // Wypełnienie bloku danych danymi z HexaString
oBuf.AutoOffset = 0;   // Ustawienie automatycznej pozycji z powrotem na początek
var i32 = oBuf.GetInt32(-4);   // Odczyt wartości do zmiennej: 0x10203040
var i16 = oBuf.GetInt16(-4);   // Odczyt wartości do zmiennej: 0x5060
var ui8 = oBuf.GetUint8(-4);   // Odczyt wartości do zmiennej: 0x70
// Kolejne wytwaranie bloku danych zapisem 3 zmiennych oraz następnie uzyskanie całej zawartości jako HexaString
oBuf.SetSize(0);   // Ustawienie nowego rozmiaru na 0 oraz usunięcie (reset) istniejącej zawartości bloku danych
oBuf.SetInt32(-2, i32);   // Doda wartości z zmiennej na koniec: 0x10203040
oBuf.SetInt16(-2, i16);   // Doda wartości z zmiennej na koniec: 0x5060
oBuf.SetUint8(-2, ui8);   // Doda wartości z zmiennej na koniec: 0x70
var s2 = oBuf.GetHexaString(0);   // Odczyt bloku danych jako HexaString. Odczytana wartość s2 jest zgodna z pierwotną wstępną wartością s1
Przykład2:
Odczyt 4 bajtowego bloku danych po bajtach jako HexaString lub w układzie dziesiątkowym
JavaScriptWybierz oraz skopiuj do schowka

var oBuf = Pm.CreatePmBuffer();
oBuf.SetSize(4);
oBuf.SetInt32(0, 1020304050, 0);

Pm.Debug("HexaString = " + oBuf.GetHexaString());

oBuf.AutoOffset = 0;
var h0 = oBuf.GetHexaString(-4, 1);
var h1 = oBuf.GetHexaString(-4, 1);
var h2 = oBuf.GetHexaString(-4, 1);
var h3 = oBuf.GetHexaString(-4, 1);
Pm.Debug("HexaString = " + h0 + ", " + h1 + ", " + h2 + ", " + h3);

oBuf.AutoOffset = 0;
var v0 = oBuf.GetUint8(-4);
var v1 = oBuf.GetUint8(-4);
var v2 = oBuf.GetUint8(-4);
var v3 = oBuf.GetUint8(-4);
Pm.Debug("GetUint8=" + v0 + ", " + v1 + ", " + v2 + ", " + v3);

Historia:
Pm9.00.05:
- LoadFromFile oraz SaveToFile nowe metody: Metody umożliwiają odczyt lub zapis do pliku binarnego. Metody te zastępują metody Pm.FileBinaryRead oraz Pm.FileBinaryWrite, które nie działają w języku JavaScript i dlatego są już przestarzałe.
- GetBit oraz SetBit nowe metody: Metody umożliwiają bitowy dostęp do bloku danych.
Pm9.00.04: Wytworzono
© MICROSYS, spol. s r. o.