Проблема не в вашем коде, проблема в неисправном импортере TLB Delphi 7.
За исключением того факта, что вы забыли включить закрывающий тег xs:schema
, ваш пример работает очень хорошо , если я скопирую и вставлю его в Delphi 2010 .
Назад к Delphi 7 .Доступ к свойству .particles
contentModel возвращает код OLE $ 80004001.
Беглый взгляд на сгенерированный TLB.pas показывает, что Delphi 7 облажался при импорте файла .TLB.contentModel
имеет тип ISchemaModelGroup
, который наследуется от ISchemaItem
.Теперь взгляните на определение:
ISchemaParticle = interface(ISchemaItem)
['{50EA08B5-DD1B-4664-9A50-C2F40F4BD79A}']
procedure GhostMethod_ISchemaParticle_0_1; safecall;
procedure GhostMethod_ISchemaParticle_4_2; safecall;
procedure GhostMethod_ISchemaParticle_8_3; safecall;
procedure GhostMethod_ISchemaParticle_12_4; safecall;
procedure GhostMethod_ISchemaParticle_16_5; safecall;
procedure GhostMethod_ISchemaParticle_20_6; safecall;
procedure GhostMethod_ISchemaParticle_24_7; safecall;
procedure GhostMethod_ISchemaParticle_28_8; safecall;
procedure GhostMethod_ISchemaParticle_32_9; safecall;
procedure GhostMethod_ISchemaParticle_36_10; safecall;
procedure GhostMethod_ISchemaParticle_40_11; safecall;
procedure GhostMethod_ISchemaParticle_44_12; safecall;
procedure GhostMethod_ISchemaParticle_48_13; safecall;
procedure GhostMethod_ISchemaParticle_52_14; safecall;
function Get_minOccurs: OleVariant; safecall;
function Get_maxOccurs: OleVariant; safecall;
property minOccurs: OleVariant read Get_minOccurs;
property maxOccurs: OleVariant read Get_maxOccurs;
end;
Видите все эти методы ghost_xxx?Delphi 2010 не генерирует их, и они не должны быть там во-первых (они приводят к тому, что смещение метода для вызова get_particles все неправильно).
Просто прокомментируйте эти методы GhostMethod_XXX в MSXML2_TLB иваш пример работает как брелок.
Однако вы все еще застряли с плохо импортированным TLB, который может взорваться вам в лицо в любое время.Я бы посоветовал вам использовать импортированную версию Delphi 2010 вместо ( MSXML2_TLB.zip ), так как она отлично работает с Delphi 7.