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
[14563] Unit에서 OLE 객체를 생성할 때
박태성 [] 1962 읽음    2013-01-15 10:05

unit uExcelOut;
 
interface
 
uses
  SysUtils, Classes;
 
Type
  TExcelProc = class(TObject)
  protected
  public
    constructor Create;
    destructor Destroy; override;
  end;
 
var
  ExcelApp : OleVariant;
 
implementation
 
uses
  ComObj, Dialogs, Variants;
 
{ TExcelProc }
 
constructor TExcelProc.Create;
begin
  inherited Create;
  try
    ExcelApp := GetActiveOleObject('Excel.Application');
  except
    try
      // If no instance of Word is running, try to Create a new Excel Object
      ExcelApp := CreateOleObject('Excel.Application');
    except
      ShowMessage('Cannot start Excel/Excel not installed ?');
      Exit;
    end;
  end;
end;
 
destructor TExcelProc.Destroy;
begin
  if not VarIsEmpty(ExcelApp) then
  begin
    ExcelApp.DisplayAlerts := False; // Discard unsaved files...
    ExcelApp.Quit;
    ExcelApp := Unassigned;
  end;
  inherited Destroy;
end;
 
initialization
 
finalization
 
end.
 



엑셀객체를 다루는 루틴을 폼에서 분리할려고 위와 같이 유닛을 생성했습니다.
처음에는 클래스의 생성자에 있던 구문은 유닛의  initialization 색션에 Destroy절에 있는 구문은 finalization 섹션에
넣어서 유닛만 폼의 uses절에 넣어서 실행을 하니 다운이 되어 버려서 위처럼 클래스를 하나 만들고 그 속에
집어 넣어니까 에러없이 작동을 합니다.

짧은 생각에는  initialization 에 변수를 할당하는 작업을 해도 될것 같은데 왜 에러가 나는지를
모르겠네요.  initialization 섹션에 코드를 넣은것과 create절에 코드를 넣는게 어떤 차이가 나는건지요?

+ -

관련 글 리스트
14563 Unit에서 OLE 객체를 생성할 때 박태성 1962 2013/01/15
14564     Re:Unit에서 OLE 객체를 생성할 때 gomsun2 2133 2013/01/16
14565         답변 감사드립니다. 박태성 1972 2013/01/16
14577             Re:답변 감사드립니다. gomsun2 1946 2013/01/17
14580                 답변 감사드립니다. 박태성 1854 2013/01/18
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.