Q&A

  • 실행시 프린터가 연결되어 있지 않다는 에러가 나는데요???
델파이 6, MSSQL 2000 이렇게 사용중입니다.

프로그램을 처음 실행시킬때 프린터가 연결되어 있지 않다는 에러와 함께 실행되는 화면이 않나오는 문제가 생겨서 확인해 보니 정말 프린터 연결이 않되어 있더군요..

근데 문제는 저야 그런 메세지를 알아서 해결하는 방법을 알려 주지만 사용자들은 모른다는 거죠..

이런 에러가 날때 그 에러를 받아서 사용자들이 알아 볼수 있도록 처리 하는 방법이 있을까요?

방법좀 알려 주세요..^^
2  COMMENTS
  • Profile
    구창민 2007.11.06 21:43
    안녕하세요...

    기본프린터가 설정되어 있지 않은 경우 메시지를 출력하고 종료하는 루틴입니다..

    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;


    // .dpr 소스 예시
    begin
    Application.Initialize;

    if IsDefaultPrinterSetup then
    begin
       Application.CreateForm(TForm1, Form1);
       Application.CreateForm(TForm2, Form2);
       Application.Run;
    end
    else
    begin
       ShowMessage('기본 프린터가 설정되어있지 않습니다. 프로그램을 종료합니다.');
    end;
    end.

    //참고로 프린터의 상태를 알아보시려면 GetPrinter라는 API를 사용하시면 됩니다..
    PRINTER_INFO_2 구조체로 Status 멤버가 반환되는데 다음과 같은 정보를 얻을 수
    있습니다.

    PRINTER_STATUS_BUSY
    PRINTER_STATUS_DOOR_OPEN
    PRINTER_STATUS_ERROR
    PRINTER_STATUS_INITIALIZING
    PRINTER_STATUS_IO_ACTIVE
    PRINTER_STATUS_MANUAL_FEED
    PRINTER_STATUS_NO_TONER
    PRINTER_STATUS_NOT_AVAILABLE
    PRINTER_STATUS_OFFLINE
    PRINTER_STATUS_OUT_OF_MEMORY
    PRINTER_STATUS_OUTPUT_BIN_FULL
    PRINTER_STATUS_PAGE_PUNT
    PRINTER_STATUS_PAPER_JAM
    PRINTER_STATUS_PAPER_OUT
    PRINTER_STATUS_PAPER_PROBLEM
    PRINTER_STATUS_PAUSED
    PRINTER_STATUS_PENDING_DELETION
    PRINTER_STATUS_PRINTING
    PRINTER_STATUS_PROCESSING
    PRINTER_STATUS_TONER_LOW
    PRINTER_STATUS_UNAVAILABLE
    PRINTER_STATUS_USER_INTERVENTION
    PRINTER_STATUS_WAITING
    PRINTER_STATUS_WARMING_UP

    그럼~ 즐거운 프로그래밍 하세요~




  • Profile
    박준영 2007.11.06 21:47
    • 이정욱
      2007.11.13 01:19
      랜카드의 구별이 아닌 IP주소로 판단 하시면 됩니다. 즉 공인아이피와 사설아이피와의 구분은 명확하므로,...
    • Marek
      2007.11.13 06:25
      안녕하세요 여러개의 디렉터리를 선택하시려면 ShellTreeView와 ShellListView를 이용하세요 ShellList...
    • 황경수
      2007.11.13 18:15
      제가 작성하고자 하는 프로그램은 디렉터리 외에는 파일은 선택이 되면 안되거든요. 그런데, ShellListV...
    • 구창민
      2007.11.13 20:24
      안녕하세요.. ShellListView 의 프로퍼티에 ObjectTypes 를 보시면, otNonFolders <- 얘를 False 로 ...
    • 황경수
      2007.11.13 20:46
      위에 답글 달아 주신 분도 감사하구요. 구창님님께도 정말 감사 드립니다.. 고마워서 눈물이..ㅜ.ㅜ ...
    • 초보자
    • 2007.11.12 13:04
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      2007.11.13 01:22
      쉽습니다. ShellListView에서 선택된 것의 경로를 가지고 확인하시면 됩니다. 예를들면.. <!--...
    • 구창민
      2007.11.13 00:01
      안녕하세요.. 아래코드는 특정 디렉토리 내의 목록을 구하는 루틴인데, 코드를 보시면, 디렉토리인...
    • Phil Choi
    • 2007.11.12 10:45
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 김기원
      2007.11.13 17:53
      안녕하세요. 저의 경우 파라미터를 사용하지 않고 아래와 같이 처리합니다. 예전에 파라미터를 사용할 ...
    • Marek
      2007.11.13 06:35
      안녕하세요 처음부터 작업하려는 Database를 설치후 개발하십시요. 파라독스를 사용하려면 님의 코드중...
    • 이정욱
      2007.11.11 03:57
      에구.. 수동으로 그냥 입력하셨나 보군요. 델파이 폼 위에 버튼과 라벨을 한개씩 올리신 후에 프로퍼티 ...
    • 문원규
      2007.11.13 03:27
      델파이 폼 위에 버튼과 라벨을 한개씩 올린다는 뜻과 프로퍼티 창에서 이벤트 탭의 OnClick 이벤트를 더...
    • 이정욱
      2007.11.13 21:06
      답변이 될지는 모르겠지만.... 말로 설명드리기는 좀 힘들것 같네요.. 델파이 책 을 하나 구하셔서 ...
    • 김기원
    • 2007.11.10 00:31
    • 4 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      2007.11.10 21:37
      그냥 노트패드에서 작업해서 사소한 버그가 있을 수 있습니다.. 아래와 같은 결과를 원하시는 것인지요? ...
    • 김기원
      2007.11.13 00:57
      감사합니다. 방법을 찾다가 해결한 방법이 아래와 같았습니다. ^^; 역시 체계적으로 배우질 않았더니 막...
    • 델코초
      2007.11.10 03:41
      아래와 같이 해 보시는건 어떨까요? ^^ procedure TfrmMain.UF_ShowChildForm(frmClass: TFormClas...
    • 김기원
      2007.11.10 20:03
      답변감합니다. 그런데 같은 오류가 발생합니다. ^^;
    • Marek
      2007.11.10 23:39
      안녕하세요 QuickRep를 구동시키는 소스를 함께 올려주세요. 컴포넌트 올렸다고 해서 느려지는 것은 절...
    • 최용일
      2007.11.09 01:15
      안녕하세요. 최용일입니다. 도움말에 보니 GetLastError를 호출하면 에러메세지를 알 수 있고, Internet...
    • 델파인
      2007.11.09 03:00
      InternetGetLastResponseInfoA(lpdwError, lpszBuffer, lpdwBufferLength) 함수를 써서 실행해 보았는데 에...
    • 한기동
    • 2007.11.08 19:18
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 한기동
      2007.11.08 20:43
      자작 답변이네용 ㅎㅎ~ 다른 사용자들 있을거라 생각해서 퀵리포트4.07 버그를 패치한걸 올려드립니다. ...
    • 델코초
    • 2007.11.08 05:22
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      2007.11.08 15:57
      폴더를 선택하는 다이얼로그는 따로 준비되어있습니다. OpenDialog나 SaveDialog는 파일 선택을 위한 다...
    • 델코초
      2007.11.08 22:21
      여기저기 찾아보고 있는데, 잘 안보이네요... opendialog 관련해서는 많은것 같은데, Save 관련해서는 ...
    • 최용일
      2007.11.09 01:17
      SHBrowseForFolder로 검색해보세요. 여기저기 예제가 많이 있을겁니다.
    • 이영주
    • 2007.11.08 05:04
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 델코초
      2007.11.10 02:47
      잘 되는데요... ^^ 샘플코드 올려 볼께요... 받아서 실행 해보세요.. 델 7 으로 만들었어요.. 프...
    • 이영주
      2007.11.10 03:32
      음... 소스코드 확인안하고 무심코 실행했다가... 골동품 기계 인걸 다시 확인했습니다. 엑셀을 100번을 ...
    • 델코초
      2007.11.10 03:43
      ㅎㅎ 죄송합니다... 고생 시켜 드리려 한건 아니었는데... 에고... ^^
    • 초보자
    • 2007.11.08 03:12
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 김병윤
      2007.11.09 20:06
      메뉴에 보시면 Tool > Editer Option 에서 변경하실 수 있습니다.
    • 미로
    • 2007.11.07 20:29
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2007.11.09 02:51
      핫키의 ID를 알 수 있는 방법이 없는것 같아서.. 핫키 자체를 보내지는 못할것 같군요... 다만 Keybd_ev...
    • 박준영
    • 2007.11.06 20:57
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 구창민
      2007.11.06 21:43
      안녕하세요... 기본프린터가 설정되어 있지 않은 경우 메시지를 출력하고 종료하는 루틴입니다.. fun...
    • 박준영
      2007.11.06 21:47
    • 이영도
      2007.11.06 20:23
      곰플레이어를 걍 ActiveX로 등록하시면 쉬운데. 그렇게는 안하시나요.
    • 미로
      2007.11.06 20:50
      ActiveX 사용 안하고.... 별도 프로그램에서 제어하고 싶거든요.
    • 이현우
      2007.11.25 03:10
      곰플레이어 제작자가 아닌이상 버튼이 눌러졌을때 발생되는 메시지까진 알기 힘듭니다. 하지만 프로그램을...
    • 낙화
    • 2007.11.06 01:53
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2007.11.06 18:34
      음.... InstallShield는 ocx만드는 프로그램이 아니라 설치 프로그램을 만드는 프로그램입니다. ocx를 ...
    • 양선호
    • 2007.11.06 01:39
    • 0 COMMENTS
    • /
    • 0 LIKES