( 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