Enum_attributes_ex

c/c++pascal

BOOL [cd_]Enum_attributes_ex([cdp_t cdp], tcurstab curs, enum_attr_ex * callback, void * param);
function [cd_]Enum_attributes_ex([cdp : cdp_t]; curs : tcurstab, callback : enum_attr_ex; user_data : Pointer) : Boolean;

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