Promotic

FindBuffer - metoda objektu PmBuffer

Popis:
Vrací pozici prvního bajtu výskytu hledaného datového bloku v datovém bloku.
Syntaxe:
Long FindBuffer(Long nOffset, Object oFind)
Parametry:
nOffset(Long) Určuje pozici čtené hodnoty v datovém bloku.
Platí, že celá čtená hodnota musí ležet uvnitř datového bloku. Položka se vyčte buď celá nebo vůbec.
>= 0 - Index (v bajtech, indexováno od 0) v datovém bloku.
-4 - Použije se vnitřní automatická pozice (viz vlastnost AutoOffset), která ukazuje za poslední čtenou nebo zapisovanou hodnotu.
Tato operace posune vnitřní automatickou pozici za čtenou/zapisovanou hodnotu.
Pokud se položky čtou/zapisují jedna za druhou, pak není potřeba ručně určovat pozici, ale je lepší použít toto automatické pozicování.
oFind(Object) Hledaný datový blok v podobě objektu PmBuffer.
Vrácená hodnota:
Vrací pozici prvního bajtu výskytu hledaného datového bloku v datovém bloku (indexováno od 0). Pokud není nalezen pak vrací hodnotu -1.
Poznámka:
Tato metoda zatím není funkční ve Web obrazech.
Tato operace posune vnitřní automatickou pozici za poslední bajt nalezeného datového bloku.
Viz také:
Příklad1:
JavaScriptVyber a zkopíruj do schránky

var oBuf = Pm.CreatePmBuffer();
oBuf.SetUint8(-2, 0x10);   // Offset: 0
oBuf.SetUint8(-2, 0x20);   // Offset: 1
oBuf.SetUint8(-2, 0x30);   // Offset: 2
oBuf.SetUint8(-2, 0x40);   // Offset: 3
oBuf.SetUint8(-2, 0x10);   // Offset: 4
oBuf.SetUint8(-2, 0x20);   // Offset: 5
oBuf.SetUint8(-2, 0x30);   // Offset: 6
oBuf.SetUint8(-2, 0x40);   // Offset: 7
var oFind = Pm.CreatePmBuffer();
oFind.SetUint8(-2, 0x20);
oFind.SetUint8(-2, 0x30);
var s0 = oBuf.GetHexaString(0);   // Výsledkem bude "1020304010203040"
oBuf.AutoOffset = 0;
var iFind0 = oBuf.FindBuffer(-4, oFind);   // Výsledkem bude 1
var iFind1 = oBuf.FindBuffer(-4, oFind);   // Výsledkem bude 5
Příklad2:
JavaScriptVyber a zkopíruj do schránky

var oBuf = Pm.CreatePmBuffer();
oBuf.SetUint8(-2, 0x10);   // Offset: 0
oBuf.SetUint8(-2, 0x20);   // Offset: 1
oBuf.SetUint8(-2, 0x30);   // Offset: 2
oBuf.SetUint8(-2, 0x40);   // Offset: 3
oBuf.SetUint8(-2, 0x10);   // Offset: 4
oBuf.SetUint8(-2, 0x20);   // Offset: 5
oBuf.SetUint8(-2, 0x30);   // Offset: 6
oBuf.SetUint8(-2, 0x40);   // Offset: 7
var oFind = Pm.CreatePmBuffer();
oFind.SetUint8(-2, 0x20);
oFind.SetUint8(-2, 0x30);
var s0 = oBuf.GetHexaString(0);   // Výsledkem bude "1020304010203040"
oBuf.AutoOffset = 0;
while (1)
{
var iFind = oBuf.FindBuffer(-4, oFind);
if (iFind < 0)
{
break;
}
Pm.Debug(iFind);   // Výsledkem bude 1 a 5
}

Historie:
Pm9.00.25: Vytvořeno
© MICROSYS, spol. s r.o.