Find_object

Internφ programovacφ jazykC/C++Pascal

function Find_object(var name : string; category : short; var position : short) : Boolean;
BOOL [cd_]Find_object([cdp_t cdp], const char * name, tcateg category, tobjnum *position);
function [cd_]Find_object([cdp : cdp_t]; name : PChar; category : tcateg; var position : tobjnum) : Boolean;

Parametry

name jmΘno objektu;
category kategorie objektu;
position v²stupnφ parametr: Φφslo zßznamu v systΘmovΘ tabulce
[cdp kontextovß prom∞nnß klienta]

Popis

Funkce zjistφ, zda existuje v otev°enΘ aplikaci objekt jmΘna name a kategorie category. Pokud ano, vrßtφ v parametru position jeho Φφslo (tj. externφ Φφslo zßznamu v p°φsluÜnΘ systΘmovΘ tabulce - TABTAB pro tabulky, OBJTAB pro ostatnφ objekty, USERTAB pro u₧ivatele a skupiny).

Jako parametr category se pou₧φvajφ konstanty:

CATEG_TABLE, CATEG_VIEW, CATEG_CURSOR, CATEG_MENU, CATEG_PGMSRC, CATEG_PGMEXE, CATEG_USER, CATEG_APPL, CATEG_PICT, CATEG_GROUP, CATEG_ROLE, CATEG_CONNECTION, CATEG_RELATION, CATEG_DRAWING, CATEG_GRAPH, CATEG_REPLREL, p°φpadn∞ sjednocenΘ s konstantou IS_LINK.

Pokud name oznaΦuje spojovacφ objekt, pak funkce dokß₧e vrßtit bu∩ Φφslo spojovacφho objektu, nebo rovnou Φφslo objektu, kter² je tφmto spojovacφm objektem p°ipojen. Je-li parametrem category sjednocenφ konstanty oznaΦujφcφ kategorii s konstantou IS_LINK, pak funkce vrßtφ ve v²stupnφm parametru position Φφslo spojovacφho objektu. Pokud neuvedete IS_LINK, pak funkce vracφ Φφslo p°ipojenΘho objektu.

Funkci lze pou₧φt i na vyhledßnφ objektu typu u₧ivatel nebo skupina (CATEG_USER, CATEG_GROUP), kterΘ nepat°φ do ₧ßdnΘ aplikace.

Hodnota funkce

Funkce vracφ p°i ·sp∞chu FALSE, p°i ne·sp∞chu TRUE. Typickß chyba je OBJECT_NOT_FOUND - Objekt nenalezen. DoporuΦujeme v₧dy ov∞°ovat v²sledek tΘto funkce, a tak se vyhnout pozd∞jÜφ prßci s nesmysln²m Φφslem objektu.

P°φklad

 if Find_object(uzivname,CATEG_USER,usernum) then begin   // u₧ivatel se nenaÜel
   strpom := 'U₧ivatel > '+uzivname+' < nenφ dosud zalo₧en(a).'#10'Chcete ho  zalo₧it prßv∞ te∩ a pokraΦovat?';
   if not YesNo_box('Varovßnφ',strpom) then halt      // zastavφ se vno°en² b∞h
   else if Create_user(uzivname,'','','','',bb,'',usernum) then Signalize;
 end;
if Find_object('SENIOR_USER',CATEG_ROLE,rolenum) then begin   // role neexistuje
   Info_box('Nelze','Role SENIOR_USER byla zruÜena. Nelze nastavit prßva.');
    halt;                // zastavφ se vno°en² b∞h, tj. prßv∞ tato procedura
 end;  
strpom := 'Nastavuji prßva uzivatele '+uzivname+' k aplikaci '+Current_application+'...';
Set_status_text(strpom);
stav := 1;
if GetSet_group_role(usernum,rolenum, CATEG_ROLE,OPER_SET,stav) then Signalize;

Info_box('Provedeno','OK');  

Viz