Delphi Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
델파이 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
FreePascal/Lazarus
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
델마당
볼랜드포럼 광고 모집

델파이 Q&A
Delphi Programming Q&A
[7946] [자답] 소켓과 TXMLDocument를 함께 사용시 에러
외발자전거 [sonkd] 1830 읽음    2002-02-04 15:23
스레드나 소킷에서 도큐먼트(DOM)를 엑세스하기전에는 반드시 Coinitalize를
먼저 선언해야만 한다고 합니다.. 
msxml.pas에 버그가 있는것 같은데 근본적인 이유는 사실 MS-XML 자체도 COM 컴포넌트이기
때문에 그런것 같다고 합니다.

방법은 아래와 습니다.
    Coinitialize(nil);
    작업...
    CoUninitialize;
의 순으로 작업을 해 주어야 한다.

uses ActivX;

{생략}

procedure TForm1.IdTCPServer1Execute(AThread: TIdPeerThread);
var
  RcvTxt: string;
  Node: IXMLNode;
  temp: string;
begin
  RcvTxt := AThread.Connection.ReadLn;
  try
    Coinitialize(nil);
    ^^^^^^^^^^^^^^^^^^^
    XMLDocument := TXMLDocument.Create(Form1);
    XMLDocument.XML.Clear;
    XMLDocument.XML.Add(RcvTxt);

    Memo1.Lines.AddStrings(XMLDocument1.XML);
    try
      XMLDocument.Active := True;
      Node := XMLDocument.DocumentElement.ChildNodes.FindNode('service');
      temp := Node.Attributes['type'];
      Memo1.Lines.Add(temp);
    except
      Memo1.Lines.Add('error');
    end;
  finally
    XMLDocument.Active := False;
    XMLDocument.Free;
    CoUninitialize;
    ^^^^^^^^^^^^^^^^
  end;
  Memo1.Lines.Add('complete2');
end;

+ -

관련 글 리스트
7943 [질문] 소켓과 TXMLDocument를 함께 사용시 에러 외발자전거 903 2002/02/03
7946     [자답] 소켓과 TXMLDocument를 함께 사용시 에러 외발자전거 1830 2002/02/04
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.