Q&A

  • 프린터 설치되지 않은 컴퓨터에서 프린트를 시도할때 나는 에러문제
안녕하세요. 다들 추석은 잘 보내셨는지요.
제가 uses Printer를 한다음에
Printer(Printer유닛에서 정의된)를 참조해서 프린터에 접근을 하고 있습니다.예를들어
  for i:=0 to Printer.Printers.Count-1 do ...
이렇게요.

그런데 이게 사무실에서 프린터가 설치된 컴퓨터에서는 잘 작동을 하는데 집에와서 프린터가 설치되지 않은 컴퓨터에서 실행을 하려니까 '프린터가 설치되지 않았다.'는 내용의 오류가 뜨면서 프로그램이 종료됩니다. 프린터가 설치되지 않은 경우에는 그냥 함수에서 exit를 하려고 합니다. 저는 Printer = nil 이면 exit를 하게 하려고 했는데요, 저 Printer변수를 참조하려고만 하면 오류가 나네요.
어떻게 해야 프린터가 설치되었는지의 여부를 알아낼 수 있을까요?

p.s. 다들 명절 증후군에서 빨리 빠져나오시길~^^;

1  COMMENTS
  • Profile
    델파리 2005.09.21 00:25
    참고하셔요.

    function IsDefaultPrinterSetup: boolean;
    var
    FDevice: PChar;
    FDriver: PChar;
    FPort: PChar;
    FHandle: THandle;
    CurrentPrinterName: string;
    begin
    GetMem(FDevice,255);
    GetMem(FDriver,255);
    GetMem(FPort,255);
    try
       try
         Printer.GetPrinter(FDevice, FDriver, FPort, FHandle);
         CurrentPrinterName := FDevice;
         if CurrentPrinterName <> '' then
         begin
           result := True;
         end
         else
         begin
           result := False; // 기본프린터 없음
         end;
       except
         on Exception do
         begin
           result := False;
         end;
       end;
    finally
       if FDevice <> nil then
         FreeMem(FDevice, 255);
       if FDriver <> nil then
         FreeMem(FDriver, 255);
       if FPort <> nil then
         FreeMem(FPort, 255);
    end;
    end;

    begin
    Application.Initialize;

    if IsDefaultPrinterSetup then
    begin
       // 원래 .DPR 파일에 있는 폼생성 루틴입니다
       Application.CreateForm(TForm1, Form1);
       Application.CreateForm(TForm2, Form2);
       Application.Run;
    end
    else
    begin
       ShowMessage('이 프로그램을 실행하기 전에 '+
                   '먼저 기본 프린터를 설정하세요');
    end;
    end.