Update cookies preferences
Promotic

FindReplaceBuffer - metoda objektu PmBuffer

Popis:
Nahradí výskyty hledaného datového bloku v datovém bloku jiným datovým blokem.
Syntaxe:
Long FindReplaceBuffer(Long nOffset, Object oFind, Object oReplace, [Long nCount])
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, který bude nahrazen datovým blokem oReplace.
oReplace(Object) Datový blok v podobě objektu PmBuffer, který nahradí nalezený datový blok oFind.
nCount[nepovinné] (Long) Počet provedených nahrazení, kde hodnota -1 (default) znamená nahradit všechny nalezené datové bloky.
Vrácená hodnota:
Vrací počet provedených záměn.
Poznámka:
Tato metoda zatím není funkční ve Web obrazech.
 
Upozornění! Pokud se velikost oFind a oReplace liší, pak dochází při každé záměně i ke zvětšení/zmenšení datového bloku.
Tato operace posune vnitřní automatickou pozici za poslední bajt nahrazeného datového bloku.
Viz také:
Příklad:
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 oReplace = Pm.CreatePmBuffer();
oReplace.SetUint8(-2, 0xff);
var s0 = oBuf.GetHexaString(0);   // Výsledkem bude "1020304010203040"
var n = oBuf.FindReplaceBuffer(0, oFind, oReplace, -1);   // Výsledkem bude 2
var s1 = oBuf.GetHexaString(0);   // Výsledkem bude "10ff4010ff40"

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