( hMap : Longint; dim Key : ...; dim Value : ...[ dim Pos : Longint]) : Byte
Vrací true a hodnotu Value jestliže existuje stejný nebo vyšší klíč Key (v tom případě mění i hodnotu Key) v mapě, jejiž identifikátor je hMap. Klíč Key musí být takového typu, který byl zvolen při otevírání mapy. Jestliže použijete jiný typ, nemusí být nutně hlášena chyba protože automaticky dojde k vnitřnímu převodu typů, ale funkce nemusí vracet korektní výsledek.
Funkce hledá vyšší klíč pouze v případě, že se jedná o mapu typu MAP_SORT_xxx. Ostatní mapy i v tomto případě použijí makrofunkci _MapFind.
Funkcí _MapExistsKey lze otestovat přítomnost klíče bez návratu hodnoty.
Nepovinný parametr Pos vrací pozici následující věty v mapě. Má význam pouze v případě tříděné mapy. Jinak vrací 0. Jestliže bude nalezena poslední věta, vrací také 0.
Podívejte se na: Procedury a funkce - Mapy
Příklad:
dim hMap : Longint;
dim sZ : StringZ;
hMap := MapOpen(MAP_STRING);
MapAdd(hMap, "abcdxyz", "111111");
MapAdd(hMap, "abcdqwe", "222222");
MapAdd(hMap, "abcdabc", "333333");
MapAdd(hMap, "abcdopm", "444444");
...
_MapSearch(hMap, "abcd", sZ) { vrátí sZ="333333" }
_MapSearch(hMap, "abcdo", sZ) { vrátí sZ="444444" }
_MapSearch(hMap, "x", sZ) { vrátí false }
Příklad (projdí věty od
klíče 100):
dim hMap : Longint;
dim sJm : String;
dim nKey : Longint;
dim Pos : Longint;
hMap := _MapOpen(MAP_SORT_LONG);
MapSetDuplicate(hMap, true);
MapAdd(hMap, 100, "100 Value 1");
MapAdd(hMap, 300, "300 Value");
MapAdd(hMap, 50, "50 Value");
MapAdd(hMap, 100, "100 Value 2");
nKey := 100;
if _MapSearch(hMap, nKey, sJm, Pos) then
repeat
Trace(Pos, " ", nKey, " ", sJm);
until _MapNext(hMap, Pos, nKey, sJm) = false;
endif
MapClose(hMap);
Příklad vypíše:
2 100 100 Value 2 3 100 100 Value 1 0 300 300 Value