Promotic

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:
AutoOffsetVnitřní automatická pozice v datovém bloku
SetSize()Nastavení velikosti datového bloku
GetSize()Zjistí velikost datového bloku
Insert()Vloží dovnitř existujícího datového bloku nový prázdný prostor a datový blok zvětší
Remove()Odstraní zevnitř existujícího datového bloku existující prostor a datový blok zmenší
GetLastError()Vrací příznak poslední chyby
FindBuffer()Vrací pozici prvního bajtu výskytu hledaného datového bloku v datovém bloku
FindReplaceBuffer()Nahradí výskyty hledaného datového bloku v datovém bloku jiným datovým blokem
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:
SetStringFix()Zápis textového řetězce s pevnou délkou
GetStringFix()Čtení textového řetězce s pevnou délkou
SetStringVar()Zápis textového řetězce s proměnlivou délkou (ukončený znakem NULL)
GetStringVar()Čtení textového řetězce s proměnlivou délkou (ukončený znakem NULL)
SetHexaString()Zápis datového bloku v podobě HexaString
GetHexaString()Čtení datového bloku v podobě HexaString
SetBase64String()Zápis datového bloku v podobě textového řetězce v kódování Base64
GetBase64String()Čtení datového bloku v podobě textového řetězce v kódování Base64
Poznámka:
- Objekt lze vytvořit metodou Pm.CreatePmBuffer.
- Tento objekt je funkční i ve Web obrazech.

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).
Viz také:
- Příklad který umožní pomocí objektu PmBuffer vytvořit, editovat a uložit do souboru tabulku ve formátu dbf.
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é čtení 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í hodnota 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);

Historie:
Pm9.00.05:
- LoadFromFile a SaveToFile nové metody: Metody umožňují číst nebo zapisovat do binárního souboru. Tyto metody nahrazují metody Pm.FileBinaryRead a Pm.FileBinaryWrite, které nejsou funkční pro jazyk JavaScript a proto jsou nyní zastaralé.
- GetBit a SetBit nové metody: Metody umožňují bitový přístup do datového bloku.
Pm9.00.04: Vytvořeno
© MICROSYS, spol. s r.o.