Delphi 7이 출시되었을 때 MSXML 6.0이 존재하지 않았습니다. 이전 버전 대신 MSXML 6.0을 사용하도록 Delphi의 TXML 문서를 구성 할 수 있습니까?Delphi 7에서 MSXML 6.0을 사용하여 TXML 문서를 만드는 방법은 무엇입니까?
3
A
답변
10
단위 이름 uMSXMLVersion 또는 선택의 당신의 이름으로 아래 코드를 추가하고 프로젝트에 추가는
{----------------------------------------------------------------------------
Set Delphi's XMLDocument to use MSXML v6.0
Usage: Include unit in project "uses"-list and Delphi will automatically use
MSXML v6.0 for TXmlDocument.
-----------------------------------------------------------------------------}
unit uMSXMLVersion;
interface
implementation
uses ActiveX, MSXML, MSXMLDOM;
function CreateDOMDocumentEx: IXMLDOMDocument;
const
CLASS_DOMDocument60: TGUID = '{88D96A05-F192-11D4-A65F-0040963251E5}';
begin
Result := nil;
if CoCreateInstance(CLASS_DOMDocument60, nil, CLSCTX_INPROC_SERVER or
CLSCTX_LOCAL_SERVER, IXMLDOMDocument, Result) <> S_OK then
Result := CreateDOMDocument; //call the default implementation
end;
initialization
MSXMLDOMDocumentCreate := CreateDOMDocumentEx;
end.
8
가 msxmldom.pas
장치는, 예를 들면에 사용자 정의 핸들러를 할당 할 수 있습니다 공공 MSXMLDOMDocumentCreate
후크를 노출 사용 :
uses
..., msxmldom;
const
CLASS_DOMDocument60: TGUID = '{88D96A05-F192-11D4-A65F-0040963251E5}';
function CreateMSXML6Document: IXMLDOMDocument;
var
Disp: IDispatch;
begin
OleCheck(CoCreateInstance(CLASS_DOMDocument60, nil, CLSCTX_INPROC_SERVER or CLSCTX_LOCAL_SERVER, IDispatch, Disp));
Result := Disp as IXMLDOMDocument;
if not Assigned(Result) then
raise DOMException.Create('MSXML 6.0 Not Installed');
end;
initialization
msxmldom.MSXMLDOMDocumentCreate := CreateMSXML6Document;
+0
나는 지금 그렇게했다. –
+1
답변 해 주셔서 감사합니다. 저는 여러분의 코드가 Fritz Deelman의 코드보다 조금 나아 졌다고 생각합니다.하지만 그는 전에 대답했습니다. – neves
기능을 재 지정하는 좋은 트릭. Delphi에서이 역동적 인 언어 트릭을 할 수 있다는 것을 알지 못했습니다. 이보다 더 좋은 점은 내가 작업중인 레거시 코드를 만든 사람도 트릭을 알지 못한다는 것입니다. – neves
[치명적인 오류] uMSXMLVersion.pas (13) : 파일을 찾을 수 없음 : 'MSXML.dcu'in 델파이 7 퍼스널 에디션. 내가 뭘 놓치고 있니? – Slappy