Справочное руководство по TDMS 5.0 API
C++
Смотри также Послать замечания

Glossary Item Box

Исходный код

//---------------------------------------------------------
// Выводит список атрибутов для выбранного объекта.
//---------------------------------------------------------

// выбрать объект
CComPtr<ITDMSObject> pObject;
if (SelectObject(&pObject, pApp, NULL)) 
{
    // получить атрибуты объекта
    CComPtr<ITDMSAttributes> pAttrs;
    CheckError(pObject->get_Attributes(&pAttrs));

    printf("\n\n");

    // вывести информацию о каждом атрибуте в коллекции
    printf("%-20s %-5s %-20s %-5s %-20s\n", "Definition", "Type", "Description", "Empty", "Value");
    long lCount;
    CheckError(pAttrs->get_Count(&lCount));
    for (long i = 0; i < lCount; i++) 
    {
        CComPtr<ITDMSAttribute> pAttr;
        VARIANT varItem;
        varItem.vt = VT_I4;
        varItem.lVal = i;
        CheckError(pAttrs->get_Item(varItem, &pAttr));

        TDMSDataType type;
        BSTR bsAttrDefName, bsDescription;
        VARIANT_BOOL bEmpty;
        VARIANT varValue;

        CheckError(pAttr->get_AttributeDefName(&bsAttrDefName));
        CheckError(pAttr->get_Type(&type));
        CheckError(pAttr->get_Description(&bsDescription));
        CheckError(pAttr->get_Empty(&bEmpty));

        PCSTR csValue = "";
        if (!bEmpty) {
            CheckError(pAttr->get_Value(&varValue));
            if (varValue.vt == VT_BSTR || VariantChangeType (&varValue, &varValue, 0, VT_BSTR) == S_OK)
                csValue = W2A(varValue.bstrVal);
            VariantClear(&varValue);
        }
        
        printf("%-20s %-5d %-20s %-5s %-20s\n", CSW2A(bsAttrDefName), type, CSW2A(bsDescription), bEmpty ? "Yes" : "No", csValue);

        SysFreeString(bsAttrDefName);
        SysFreeString(bsDescription);
    }
}
© 2016 CSoft Development. Все права защищены.