p; C class name = host name of sender (for banner) *) s:=''''C''''+copy(my_hostname,1,99)+#10; stream_write_s(config_stream,s); (*@\\\*) (*@/// L banner page *) if f_banner then begin s:=''''L''''+f_user+#10; stream_write_s(config_stream,s); end; (*@\\\0000000303*) (*@/// T title (for lp_pr only) *) if f_title<>'''''''' then begin s:=''''T''''+copy(f_title,1,79)+#10; stream_write_s(config_stream,s); end; (*@\\\0000000303*) (*@/// the print command itself *) case f_printtype of lp_plain: s:=''''l''''; lp_ascii: s:=''''f''''; lp_dvi: s:=''''d''''; lp_plot: s:=''''g''''; lp_ditroff: s:=''''n''''; lp_ps: s:=''''o''''; lp_pr: s:=''''p''''; lp_fortran: s:=''''r''''; lp_troff: s:=''''t''''; lp_raster: s:=''''v''''; lp_cif: s:=''''c''''; end; s:=s+job_name+#10; for i:=1 to f_count do stream_write_s(config_stream,s); (*@\\\*) (*@/// U unlink the file after the printing *) s:=''''U''''+jobname+#10; stream_write_s(config_stream,s); (*@\\\*) (*@/// send the data *) config_stream.seek(0,0); (* set the stream back to start *) s:=#02+inttostr(config_stream.size)+'''' cfA''''+job_name+#10; write_s(f_socket,s); self.response; ok:=1; while ok>0 do begin ok:=config_stream.read(f_buffer^,buf_size); write_buf(f_socket,f_buffer^,ok); end; write_s(f_socket,#0); (* finish the config data *) (*@\\\*) finally config_stream.free; end; (*@\\\0000001007*) (*@/// send the data to print *) s:=#03+inttostr(stream.size)+'''' dfA''''+job_name+#10; write_s(f_socket,s); self.response; f_stream.seek(0,0); (* set the stream back to start *) ok:=1; while ok>0 do begin ok:=f_stream.read(f_buffer^,buf_size); write_buf(f_socket,f_buffer^,ok); end; write_s(f_socket,#0); (* finish the plot *) (*@\\\000000081E*) inc(lpr_count); end; (*@\\\0000001001*) (*@/// procedure t_lpr.GetQueueStatus(detailed:boolean); *) procedure t_lpr.GetQueueStatus(detailed:boolean); var p: pointer; ok,ok2:integer; s: string; begin if (f_queue='''''''') then EXIT; if detailed then s:=#04+f_queue+#10 else s:=#03+f_queue+#10; write_s(f_socket,s); while not eof(f_socket) do begin read_var(f_socket,f_buffer^,buf_size,ok); p:=f_buffer; while ok>0 do begin (* just to be sure everything goes into the stream *) ok2:=f_stream.write(p^,ok); dec(ok,ok2); p:=pointer(longint(p)+ok2); end; end; f_stream.seek(0,0); (* set the stream back to start *) end; (*@\\\0000001503*) (*@/// procedure t_lpr.response; *) procedure t_lpr.response; var b: byte; ok: integer; begin read_var(f_socket,b,1,ok); if (ok<>1) or (b<>0) then raise EProtocolError.Create(''''LPR'''','''''''',999); end; (*@\\\0000000305*)
{ remove jobs } { get status } (*@\\\0000000501*)
{ The Mail and News protocols } (*@/// class t_smtp(t_tcpip) *) (*@/// constructor t_smtp.Create(Aowner:TComponent); *) constructor t_smtp.Create(Aowner:TComponent); begin inherited create(AOwner); f_Socket_number:=25; f_receipts:=TStringList.Create; f_body:=TStringList.Create; end; (*@\\\0000000501*) (*@/// destructor t_smtp.Destroy; *) destructor t_smtp.Destroy; begin f_receipts.Free; f_body.Free; inherited destroy; end;
上一页 [1] [2] [Delphi程序]Delphi 程序员代码编写标准指南 (六)
|