Parametry
curs | číslo tabulky nebo otevřeného kurzoru |
callback | funkce, která bude zavolána pro každý sloupec |
user_data | parametr předaný callbacku |
[cdp | kontextová proměnná klienta] |
Od verze
8.0
Popis
Funkce Enum_attributes_ex
projde po řadě všechny sloupce v tabulce nebo kurzoru curs a pro každý z nich zavolá funkci callback. Procházení začíná sloupcem s číslem 1 (včetně případných skrytých sloupců). Jako parametr callback je nutno zavolat instanci funkce typu enum_attr_ex definovaného takto:
typedef BOOL (_stdcall enum_attr_ex)(char * attrname, uns8 attrtype, uns8 attrmult, t_specif attrspecif, void * user_data);
type enum_attr = enum_attr_ex(attrname : PChar; attrtype, attrmult : uns8; attrspecif : t_specif; user_data : Pointer) : Boolean; stdcall;
Funkce callback musí mít rozhraní _stdcall.
Parametry, které jsou předány funkci callback, jsou významově shodné se stejně pojmenovanými parametry funkce Attribute_info_ex
. Parametr user_data předaný do funkce Enum_attributes_ex
bude beze změny předán do funkce callback. Pokud funkce callback vrátí hodnotu FALSE, procházení sloupců se ukončí a tato funkce již nebude více volána. Nechcete-li přerušit procházení sloupců, musí funkce callback vracet TRUE.
Zjistit názvy a typy sloupců v tabulce lze také systémovým dotazem _IV_TABLE_COLUMNS
.
Hodnota funkce
Funkce Enum_attributes_ex
vrátí TRUE, pokud tabulka nebo kurzor curs byl nalezen a funkce callback zavolána alespoň jednou. Funkce Enum_attributes_ex
vrátí FALSE, pokud tabulka nebo kurzor zadaná parametrem curs neexistuje.
Příklad
vypsání jmen sloupců záznamu v konzolovém klientovi pro Linux:
...
else if (((int)rec_all > 0) && (disp_mode == 1))
{
if (disp_attrname)
{
cd_Enum_attributes_ex(cdp, cursor, Disp_Attrname1, NULL);
printf("\n");
...
funkce, která se volá pro každý sloupec kurzoru:
int Disp_Attrname1( char * attrname, uns8 attrtype, uns8 attrmult, t_specif attrspecif, void * unused)
{
attr_count++;
if (strncmp(attrname,"_W5_",4))
{
if (disp_attrname)
{
printf("%s ", attrname);
}
printf(", ");
}
return TRUE;
}
Viz