_MapSearch

(   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