안녕하세요. 다들 추석은 잘 보내셨는지요.
제가 uses Printer를 한다음에
Printer(Printer유닛에서 정의된)를 참조해서 프린터에 접근을 하고 있습니다.예를들어
for i:=0 to Printer.Printers.Count-1 do ...
이렇게요.
그런데 이게 사무실에서 프린터가 설치된 컴퓨터에서는 잘 작동을 하는데 집에와서 프린터가 설치되지 않은 컴퓨터에서 실행을 하려니까 '프린터가 설치되지 않았다.'는 내용의 오류가 뜨면서 프로그램이 종료됩니다. 프린터가 설치되지 않은 경우에는 그냥 함수에서 exit를 하려고 합니다. 저는 Printer = nil 이면 exit를 하게 하려고 했는데요, 저 Printer변수를 참조하려고만 하면 오류가 나네요.
어떻게 해야 프린터가 설치되었는지의 여부를 알아낼 수 있을까요?
p.s. 다들 명절 증후군에서 빨리 빠져나오시길~^^;
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.