Страница 1 из 1

Проблема с функцией Classifier.GetSubItems(...) в Delphi

Добавлено: 03 фев 2009, 16:57
Isaev_AA
Значит что я делаю. Конечно ....

Код: Выделить всё

 AplPssAPI: TAplPssAPI;
 PssClassifier :IAplAPI_Classifier;
... потом ....

Код: Выделить всё

 AplPssAPI:=TAplPssAPI.Create(nil);
 PssClassifier:= PssApi As IAplAPI_Classifier;
 PssClassifier.LoadDictionary;
... вызываю, передаю элемент уровня каталога (Integer) и две переменные (OleVariant) ...

Код: Выделить всё

 PssClassifier.GetSubItems(Level,tempItems,tempRels);
... и получаю ...
ERROR: Access violation ... in module 'oleaut32.dll' ! :twisted:

Re: Проблема с функцией Classifier.GetSubItems(...) в Delphi

Добавлено: 03 фев 2009, 17:21
ayatsk
1. Был ли Connect ?
2. Как получен Level ? (реально это указатель, и если указывает не туда - будет падение)
3. Какая верся Delphi?

Re: Проблема с функцией Classifier.GetSubItems(...) в Delphi

Добавлено: 03 фев 2009, 17:26
Isaev_AA
Connect конечно был !
Delphi 7.0
Уровень был получен ...

Код: Выделить всё

InSPI:=PssClassifier.GetClassifierSystemById('СИН');
if PssClassifier.LoadSubClassifierLevels(InSPI,tempFolders,0) Then
begin
      if (VarArrayHighBound(tempFolders,1)-VarArrayLowBound(tempFolders,1)+1)>0 then
      begin
        ArrTemp:=tempFolders;
        for i:=0 to Length(ArrTemp)-1 do
        begin
          PssClassifier.GetSubItems(ArrTemp[i],tempItem,tempRels);
        end;
      end;
end;
... в массиве ArrTemp объекты типа "apl_classifier_level".

В общем мне нужно получить все позиции инструмента которые привязаны к данному уровню каталога.
То есть от объектов "apl_classifier_level" перейти к связанному списку "charact_list_element".

Re: Проблема с функцией Classifier.GetSubItems(...) в Delphi

Добавлено: 03 фев 2009, 19:25
ayatsk
Сейчас функция GetSubItems в качестве первого параметра корректно воспринимает только массив. И возвращает содержимое всех переданных ей уровней. Должна была разбираться что ей передали - массив или целое, но ... В ближайшее время исправим.

Если вызвать как

Код: Выделить всё

PssClassifier.GetSubItems(tempFolders,tempItem,tempRels);
- работает.