Q&A

  • quick report 에서 네트워크 프린터시 프로그램이 죽어요..
quick report 에서 네트워크 프린터로 프린터할려구 하는데
네트워크컴퓨터가 켜져있으면 프린터가 잘됩니다..
만약..네트워크컴퓨터가 꺼져있거나 제컴퓨터의 렌선을 뽑은후
프로그램에서 출력하면 프로그램이 바로
에러메세지 출력후 죽어버려요..
혹시 프로그램 문제인가해서 그냥 폼하나에 리포트폼하나만 추가하고
실행해 봐두 마찬가지네요..
네트워크컴퓨터 출력시 이런 문제가 있나보던데..어떻게 해결하는방법이
업을까요??
많은 조언부탁합니다.

예외처리 exception 을 걸어도 이런 문제에선 아예걸리지가 않네요..
ㅠ.ㅠ
1  COMMENTS
  • Profile
    황선욱 2002.09.07 01:32
    그럴리가요. 저도 퀵레포트로 네트워크프린터를 사용하는데 그쪽
    네트워크프린터가 끄져도 아무렇지 않던데요. 아마도 Windows
    문제인것 같아요. 저는 2000serve를 사용하는데 한번씩 프린터할
    때 뻗어버립니다. Win98에서는 아무렇지 않던데. 메모리 문젠가 ?
    다른 컴퓨터에서도 해보셨나요?

    아무튼 프린터하기전에 프린터상태를 체크한후 'ready' 상태일
    경우에만 프린터하면 되겠군요. 프린터상태를 체크하는 콤프넌트
    인데 아래와 같이 해보세요. (저도 어디서 퍼왔는데 출처는 모름)
    ----------------------------------------------------------
    Unit PrinterStatus;

    interface

    uses
    Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;

    type
    TPrinterStatus = class(Tcomponent)
    private
       { Private declarations }
       Fport : Word;
       FStatusStr : string;
    protected
       { Protected declarations }
    public
       { Public declarations }
       function PrinterReady(LPT: Word): boolean;
    published
       { Published declarations }
       property StatusMsg: string read FStatusStr;
    end;

    procedure Register;

    implementation
    uses Printers;

    procedure Register;
    begin
    RegisterComponents('sirius', [TPrinterStatus]);
    end;

    const
    PrnReady = $90;
    OffLine = $00;
    OffLine2 = $10;            
    PaperOut = $20;
    PaperOut2 = $30;            
    HookedButOff = $80;        
    NoConnect = $B0;            

    function TPrinterStatus.PrinterReady(LPT: Word): boolean;
    var
    ErrorCode, C : BYTE;
    code, x : integer;
    s : string;

              function GetPrinterStatus (LPT: Word): Byte;
              begin
                asm
                  mov ah,2
                  mov dx,LPT
                  dec dx
                  int $17
                  mov @Result,ah
                end;
              end;  


    begin
    result := false;  

    Fport := LPT;
    if Fport = 0 then begin  
      s := Printer.Printers[Printer.PrinterIndex];
      if Pos('Fport',s) <> 0 then begin
        s := Copy(s, Pos('Fport',s) +3, 1);
        Val(s,x,code);
        if code <> 0 then Fport := 1 else Fport := x;
      end else Fport := 1;  
    end;

    if (Fport > 4) or (Fport < 1) then begin
      raise ERangeError.CreateFmt(
          'LPT%d is not within the valid range of %d..%d', [Fport,1,4]);
      exit;
    end;

    ErrorCode := GetPrinterStatus(Fport);
    ErrorCode := ErrorCode and $B0;      

    C := ERRORCODE shl 6;  

    if C > 0 then ERRORCODE := $B0;

    case ErrorCode of
    PrnReady            : begin
                             FStatusStr := 'Printer Ready'; result := true;
                           end;
    NoConnect           : FStatusStr := 'Printer not connected';
    Offline,OffLine2    : FStatusStr := 'Printer off line';    
    PaperOut,PaperOut2  : FStatusStr := 'Printer out of paper';
    HookedButOff        : FStatusStr := 'Printer connected but turned off';
    else
    FStatusStr := 'Printer error code: ' + IntToStr(ErrorCode);
    end;

    end;

    end.
    위의 소스를 참고하시고요...
    이 콤포의 사용방법은 간단합니다...

    If not PrinterStatus1.PrinterReady(0) then  //0 = 현재 프린터 포트
    ShowMessage(PrinterStatus1.StatusMsg)
    else
      // 프린트를 한다...
    --------------------------------------------------------------

    • 김상수
    • 2002.09.07 02:03
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 이추형
      2002.09.07 02:33
      델파이 처음시 아래와 같은 소스가 보입니다.. unit Unit1; interface uses   Windows...
    • 김상수
      2002.09.07 03:26
    • 김상수
      2002.09.07 05:26
      답변 감사드리구요...또 질문할께..   private     { Private decl...
    • 정용식
    • 2002.09.07 00:38
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 황선욱
      2002.09.07 01:32
      그럴리가요. 저도 퀵레포트로 네트워크프린터를 사용하는데 그쪽 네트워크프린터가 끄져도 아무렇지 않던...
    • 최용일
      2002.09.07 03:08
      안녕하세요. 최용일입니다. 그냥 C처럼 포인터 연산하셔두 되구요, 배열로 형변환해도 됩니다... typ...
    • 스말(^___^)
      2002.09.07 03:38
      우선 답변 감사드립니다.. 답변을 보고 다음과 같이 바꿔보았는데요 if 문에서 Operator not applicable ...
    • 최용일
      2002.09.07 03:47
      안녕하세요. 최용일입니다. 위에서 Short(2바이트)으로 했는데 Win32에서 포인터는 4바이트입니다. 때...
    • 스말(^___^)
      2002.09.07 03:58
    • 최수림
    • 2002.09.06 23:52
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 최석기
      2002.09.07 00:36
      만약 첫번째 Row를 선택하려면 ListView1.Items[0].Selected := true; 이런식으로 해주시면 되요.
    • 델사랑
    • 2002.09.06 23:14
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이추형
      2002.09.07 01:20
      파라독스는 십만건정도까지는 무난하다고 말하며 억세스는 백만건정도까지 무난하다고 얘기를 들었습니다....
    • 김동완
    • 2002.09.06 23:10
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 최석기
      2002.09.06 23:41
      shl과 shr이 있습니다.
    • 김상수
    • 2002.09.06 21:46
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 버섯
      2002.09.06 22:40
      델파이 객체에는 프로퍼티와 이벤트와 메쏘드가 있습니다. query1 <-- Tdataset 에서 파생된 Tquery ...
    • 황선욱
      2002.09.06 21:59
      답변을 다 쓰보네요. 기분 괜찮네..   with DM.Query5 do begin      c...
    • 성더기
      2002.09.08 01:12
      insert select 문을 써보세요 insert into table_a (fld_a, fld_b) select fld_a, fld_b from table_b ...
    • 김영남
      2002.09.06 22:25
      BatchMove  컴포넌트를 사용해 보시죠?
    • 버섯
      2002.09.06 22:22
      프로그램에서 테이블을 매번 복사하는게 좀 이해가 안가네요.. 혹시 같은 서버에서 데이터베이스가 ...
    • 김기자
    • 2002.09.06 21:09
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 버섯
      2002.09.06 22:43
      저는 active-x 폼으로 만들어서 배포한적이 있는데... midas.dll 만 복사해두시면 자동으로 업그래이드 ...
    • 버섯
      2002.09.06 22:45
      C++ 빌더를 먼저 설치하시고.. 자료를 찾아서 컴파일 해보심이....
    • 2002.09.06 21:08
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 김영남
      2002.09.06 22:31
      DroppedDown   이 Property를 사용하면 상태를 알 수 있지 않을까요? 그리고 음...참고로 Cal...
    • 2002.09.06 23:51
      감사합니다...^^ DroppedDown은 다음달로 넘어갈때에도 속성이 TRUE가 되는군요.. CloseUp을 사용하니 되...
    • 최병련
    • 2002.09.06 20:45
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 궁금이
      2002.09.06 22:54
      QuickReport HTML로 저장할려고 하면 TQRShape 가 지원이 안될꺼에요. 저도 이 문제 때문에  qu...
    • 우이
    • 2002.09.06 20:30
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 홍성락
      2002.09.07 03:03
      hsr////////////////////////////////////////////////// 위 컴포넌트는 안써보았으나 한글처리 예제를 보...
    • 우이
      2002.09.07 04:12
      주신 글 감사드립니다.... 적용해보았는데..한글부분 출력은 않돼네요.. 저에게 주신소스는 프린터기...
    • 아폴론
    • 2002.09.06 20:18
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 조덕진
      2002.09.13 05:30
      SQL문을 서버에 놓고 필요할때 가져다 쓴다는 것은 아마도 스토어드 프로시져를 말하시는 것 같네요. ...
    • KDDG_ZZOM
      2002.09.06 20:41
      어떤걸 물어보신건지??? 오라클경우는 사용자가 함수나, 프로시져, 뷰등을 먼저 생성한후 사용하시면 편...
    • 이추형
      2002.09.06 20:40
      난감한 질문이십니다. ^.^ 암튼 쉽게 말씀드리면 SQL문을 실행시키는데 섭에서(DB서버) 실행시키는 방법...
    • 이추형
      2002.09.07 01:23
      이미지를 디비에 저장 하는방법은 좋지 않다고 들었습니다. 용량이 장난 아니게 늘어나니까요 특히 b...