Objekt PmBuffer (Paměť binárních dat)
Popis:
Objekt představuje binární hodnoty v datovém bloku.
Datový blok (buffer) je souvislá oblast v paměti.
Pro čtení/zápis jednotlivé hodnoty je nutno znát její pozici (offset) v datovém bloku a také její datový typ (velikost).
Obecné vlastnosti a metody:
AutoOffset | Vnitřní automatická pozice v datovém bloku |
SetSize | Nastavení velikosti datového bloku |
GetSize | Zjistí velikost datového bloku |
GetLastError | Vrací příznak poslední chyby |
SetBuffer | Zápis datového bloku v podobě objektu PmBuffer |
GetBuffer | Čtení datového bloku v podobě objektu PmBuffer |
SetPtr | Zápis ukazatele (pointeru, adresy) na jiný datový blok v podobě objektu PmBuffer |
GetPtr | Falešné vyčtení (přeskočení) ukazatele (pointeru) na jiný datový blok |
LoadFromFile | Čtení hodnot z binarního souboru do datového bloku |
SaveToFile | Zápis hodnot z datového bloku do binárního souboru |
CalcCheckSum | Vrací kontrolní součet (hash) datového bloku |
Metody pro zapsání a čtení číselné hodnoty:
SetBit | Zápis jednoho bitu |
GetBit | Čtení hodnoty jednoho bitu |
SetInt8 | Zápis 1-bajtové celočíselné hodnoty |
GetInt8 | Čtení 1-bajtové celočíselné hodnoty |
SetInt16 | Zápis 2-bajtové celočíselné hodnoty |
GetInt16 | Čtení 2-bajtové celočíselné hodnoty |
SetInt32 | Zápis 4-bajtové celočíselné hodnoty |
GetInt32 | Čtení 4-bajtové celočíselné hodnoty |
SetUint8 | Zápis 1-bajtové celočíselné hodnoty bez znaménka |
GetUint8 | Čtení celočíselné 1-bajtové hodnoty bez znaménka |
SetUint16 | Zápis 2-bajtové celočíselné hodnoty bez znaménka |
GetUint16 | Čtení 2-bajtové celočíselné hodnoty bez znaménka |
SetUint32 | Zápis 4-bajtové celočíselné hodnoty bez znaménka |
GetUint32 | Čtení 4-bajtové celočíselné hodnoty bez znaménka |
SetFloat32 | Zápis reálné 4-bajtové hodnoty |
GetFloat32 | Čtení reálné 4-bajtové hodnoty |
SetFloat64 | Zápis reálné 8-bajtové hodnoty |
GetFloat64 | Čtení reálné 8-bajtové hodnoty |
Metody pro zapsání a čtení hodnoty typu String:
Poznámka:
Porovnání objektů pro držení hodnot:
Následující typy objektů jsou určené k držení hodnot (libovolného datového typu). Každý z těchto objektů má své výhody a nevýhody a volba závisí na požadovaném používání.
PmArray: Tento objekt obsahuje hodnoty, které jsou přístupné indexem do pole - lze tedy kdykoli přečíst jakoukoli hodnotu v tomto objektu. Čtení a zápis hodnoty je velmi rychlé, přidávání hodnot je však pomalé.
Tento objekt je funkční pouze pro jazyk
JavaScript, pro jazyk
VBScript je pole v podobě datového typu
Array.
PmMap: Tento objekt obsahuje hodnoty, které jsou přístupné svým názvem (textovým identifikátorem). Názvy těchto hodnot představují vlastnosti objektu. Výhoda je, že díky názvům je kód ve skriptu "čitelnější". Nevýhoda je, že nelze přistupovat k hodnotám v cyklu, kdy je potřeba získávat hodnoty pomocí indexu.
PmBuffer: Tento objekt obsahuje binární hodnoty v datovém bloku. Pro čtení/zápis jednotlivé hodnoty je nutno znát její pozici (offset) v datovém bloku a také její datový typ (velikost).
Příklad1:
JavaScriptVyber a zkopíruj do schránky
var oBuf = Pm.CreatePmBuffer();
// Nastavení celého obsahu datového bloku jako HexaString a následné postupné vyčítání jeho obsahu do 3 proměnných různých typů
var s1 = "40302010605070";
// HexaString obsahuje 7 bajtů s hodnotami 0x40,0x30,0x20,0x10,0x60,0x50,0x70
oBuf.SetHexaString(-2, s1);
// Naplnění datového bloku daty z HexaString
oBuf.AutoOffset = 0;
// Nastavení automatické pozice zpět na začátek
var i32 = oBuf.GetInt32(-4);
// Čtení hodnoty do proměnné: 0x10203040
var i16 = oBuf.GetInt16(-4);
// Čtení hodnoty do proměnné: 0x5060
var ui8 = oBuf.GetUint8(-4);
// Čtení hodnoty do proměnné: 0x70
// Postupné vytváření datového bloku zápisem 3 proměnných a následné získání celého obsahu jako HexaString
oBuf.SetSize(0);
// Nastavení nové velikost na 0 a smazání (reset) existujícího obsahu datového bloku
oBuf.SetInt32(-2, i32);
// Přidá hodnoty z proměnné na konec: 0x10203040
oBuf.SetInt16(-2, i16);
// Přidá hodnoty z proměnné na konec: 0x5060
oBuf.SetUint8(-2, ui8);
// Přidá hodnoty z proměnné na konec: 0x70
var s2 = oBuf.GetHexaString(0);
// Čtení datového bloku jako HexaString. Vyčtená hodnota s2 je stejná jako původní vstupní s1
Příklad2:
Čtení 4 bajty datového bloku po bajtech jako
HexaString nebo decimálně
JavaScriptVyber a zkopíruj do schránky
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);