Bei D2009/D2010 sollte es keine Probleme geben (zumindestens sieht alles gut so aus)
MSXMLCheck ... sollte es nicht eigentlich auch reichen, wenn man einfach mal versucht die verschiedenen Versionen zu erzeugen?
Delphi-Quellcode:
Uses ActiveX,
MSXML;
Type TXMLDOMVersion = (xvXX, xv26, xv30, xv40, xv50, xv60);
TXMLDOMVersions =
Set of TXMLDOMVersion;
// xvXX in WinXP = xv30
Function CheckXMLDOMVersion: TXMLDOMVersions;
Const DOMVer:
Array[TXMLDOMVersion]
of TGUID = (
'
{2933BF90-7B36-11D2-B20E-00C04F983E60}'
{msxml.CLASS_DOMDocument},
'
{F5078F1B-C551-11D3-89B9-0000F81FE221}'
{msxmldom.CLASS_DOMDocument26},
'
{F5078F32-C551-11D3-89B9-0000F81FE221}'
{msxmldom.CLASS_DOMDocument30},
'
{88D969C0-F192-11D4-A65F-0040963251E5}'
{msxmldom.CLASS_DOMDocument40},
'
{88D969E5-F192-11D4-A65F-0040963251E5}'
{CLASS_DOMDocument50},
'
{88D96A05-F192-11D4-A65F-0040963251E5}'
{CLASS_DOMDocument60});
Var v: TXMLDOMVersion;
XML: IXMLDOMDocument;
Begin
Result := [];
For v := Low(v)
to High(v)
do
If Succeeded(CoCreateInstance(DOMVer[v],
nil, CLSCTX_INPROC_SERVER
or CLSCTX_LOCAL_SERVER, IDispatch,
XML))
Then
Include(Result, v);
End;
(wollte eigentlich in dem Array die vordefinierten "Konstanten" verwenden, aber da es typisierte Konstanten sind, sind sie ja eigentlich "Variablen"
)