Promotic
WikipediaLinkedInYoutubeTwitterFacebook

Obiekt PmBuffer (Dane binarne)

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 należy znać jej pozycję (offset) w bloku danych oraz jej typ danych (wielkość).
Ogólne metody oraz właściwości:
AutoOffset Wewnętrzna automatyczna pozycja w bloku danych
SetSize Ustawienie wielkości bloku danych
GetSize Stwierdzi wielkośc bloku danych
GetLastError Zwraca marker ostatniego błędu
SetBuffer Zapis bloku danych w postaci PmBuffer
GetBuffer Odczyt bloku danych w postaci PmBuffer
SetPtr Zapis markera (pointera, adresu) na inny blok danych w postaci PmBuffer
GetPtr Pozorny odczyt, (przeskoczenie) markera (pointer) na inny blok danych
LoadFromFile Odczyt wartości z pliku binarnego do bloku danych
SaveToFile Zapis wartości z bloku danych do pliku binarnego
Metody do zapisu oraz odczytu wartości liczbowej:
SetBit Zapis jednego bitu
GetBit Odczyt wartości jednego bitu
SetInt8 Zapis 1 bajtowej wartości całkowitej
GetInt8 Odczyt 1 bajtowej wartości całkowitej
SetUint8 Zapis 1 bajtowej wartości całkowitej bez znaku
GetUint8 Odczyt 1 bajtowej wartości bez znaku
SetInt16 Zapis 2 bajtowej wartości całkowitej
GetInt16 Odczyt 2 bajtowej wartości całkowitej
SetUint16 Zapis 2 bajtowej wartości całkowitej bez znaku
GetUint16 Odczyt 2 bajtowej wartości całkowitej bez znaku
SetInt32 Zapis 4 bajtowej wartości całkowitej
GetInt32 Odczyt 4 bajtowej wartości całkowitej
SetUint32 Zapis 4 bajtowej wartości całkowitej bez znaku
GetUint32 Odczyt 4 bajtowej wartości całkowitej bez znaku
GetFloat32 Odczyt 4 bajtowej wartości rzeczywistej
SetFloat32 Zapis 4 bajtowej wartości rzeczywistej
GetFloat64 Odczyt 8 bajtowej wartości rzeczywistej
SetFloat64 Zapis 8 bajtowej wartości rzeczywistej
Metody do zapisu oraz odczytu wartości typu String:
SetStringFix Zapis łańcucha o stałej długości
GetStringFix Odczyt łańcucha o stałej długości
SetStringVar Zapis łańcucha o zmiennej długości (zakończony znakiem NULL)
GetStringVar Odczyt łańcucha o zmiennej długości (zakończony znakiem NULL)
SetHexaString Zapis bloku danych w postaci HexaString
GetHexaString Odczyt bloku danych w postaci HexaString
SetBase64String Zapis bloku danych w postaci Base64String
GetBase64String Odczyt bloku danych w postaci Base64String
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 tablicy - czyli w dowolnej chwili można odczytać dowolną wartość w tym obiekcie. Odczyt oraz ustawienie wartości jest bardzo szybkie, dodanie wartości jset wszak wolne.

Obiekt ten działa tylko dla języka JavaScript, dla języka VBScript tablica jest w postaci 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 należy 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 w postaci 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 w postaci 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 w postaci HexaString. Odczytana wartość s2 jest zgodna z pierwotną wstępną wartością s1
Przykład2:
Odczyt 4 bajtowego bloku danych po bajtach w postaci HexaString lub decymalnie
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 z tego powodu 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.Tavičská 845/21 703 00 Ostrava-Vítkovice