1.程序不定时出现 Access violation at address 77D1461D in module 'user32.dll'.Read of address o56943134
2.怎么判断打印机的状态(如是否联机)
3.怎么判断远端计算机是否运行和远端SQL Server 是否运行
4.怎么通过Delphi 进行Sql Server 备份(备份出来的数据能符加到数据库上)不好意思一下问了这么多问题.快帮帮我了

解决方案 »

  1.   

    1.访问了已经释放或未创建的资源
    4.写SQL 语句实现
    备份:backup database [databasename] to [备份路径]
    恢复:restore database [databasename] from [备份文件的路径]
      

  2.   

    1.和上边的一样,应该是访问了没有的资源
    2.检测打印机状态要连接一下,然后在Except中写没有连接或者已经连接的代码
    3.要连接一下数据库,然后在Except中写没有连接或者已经连接的代码
    4.可以自己写程序也可以用sqlserver 的bpc工具,你可以查下sqlserver的帮助
      

  3.   

    可用CREATEFILE以PRN为文件名生成一个文件,检测返回值,若成功则打印机可用,否则显示打印机故障。生成关于PRN的文件句柄后,可象普通文件一样向文件写入内容,比如WRITE,写完后关闭文件。//从并行端口读取打印机状态function GetPrinterStatus:byte;asmMOV DX,$379;IN AL,DX;end;//获取打印机是否出错function CheckPrinter:boolean;vartemp:byte;begintemp:=GetPrinterStatus;Result:=not ( ((temp and $80)=0) //打印机忙or ((temp and $20)<>0) //打印机缺纸or ((temp and $10)=0) //打印机未联机or ((temp and $08)=0) ); //打印机出错;end;
     
       
                             ---------出自超级锰料2003版
      

  4.   

    备分数据库
    procedure QuickCopyTable(T: TTable; DestTblName: string; Overwrite: Boolean);varDBType: DBINAME;WasOpen: Boolean;NumCopied: Word;begin//save table active stateWasOpen := T.Active;if not WasOpen then T.Open; //ensure the table is open//Get driver type stringCheck(DbiGetProp(hDBIObj(T.Handle), drvDRIVERTYPE, @DBType, SizeOf(DBINAME), NumCopied));//Copy the tableCheck(DBICopyTable(T.DBHandle, Overwrite, PChar(T.Tablename),DBType, PChar(DestTblName)));//Restore active stateT.Active := WasOpen;end; 
     
                               ---------出自超级锰料2003版
      

  5.   

    fim(镇江DJ)(DJ=DelphiJava) 还有别的可能吗?
      

  6.   

    DataSource3.DataSet.Close;
    DataSource3.DataSet.Open;
    DataSource3.DataSet.Edit;
    DataSource3.DataSet.FieldByName('from1').Value:=dbedit1.Text;
    DataSource3.DataSet.FieldByName('from2').Value:=dbedit2.Text;
    DataSource3.DataSet.FieldByName('to1').Value:=dbedit3.Text;
    DataSource3.DataSet.FieldByName('to2').Value:=dbedit4.Text;
    DataSource3.DataSet.FieldByName('date1').Value:=datetostr(dtp1.Date);
    DataSource3.DataSet.FieldByName('tel1').Value:=dbedit5.Text;
    DataSource3.DataSet.FieldByName('tel2').Value:=dbedit6.Text;
    DataSource3.DataSet.FieldByName('name').Value:=edit1.Text;
    DataSource3.DataSet.FieldByName('address').Value:=edit2.Text;
    DataSource3.DataSet.Post;
    DataSource3.DataSet.Close;
    DataSource3.DataSet.Open;
    DM_Orgnize.RP_ksend_Group.ProjectFile:=ExtractFilePath(application.ExeName)+'..\Orgnize\report\Line_j.rav';
    DM_Orgnize.Rp_ksend_Group.Open;
    DM_Orgnize.Rp_ksend_Group.Execute;代码是这样的.打印窗休出现后就出错Access violation at address 77D1461D in module 'user32.dll'.Read of address o56943134
      

  7.   

    DM_Orgnize.RP_ksend_Group.ProjectFile:=ExtractFilePath(application.ExeName)+'..\Orgnize\report\Line_j.rav';>>从你的代码来说,你的打印窗体极有可能还没有创建呢,所以出错
    我猜测到你执行到DM_Orgnize.Rp_ksend_Group.Open;一句中出错
      

  8.   

    下面的代码可以判断所选打印机是否支持双面打印。如返回值为1,则表示支持双面打
    印,返回值为0则表示不支持。
    DeviceCapabilitiesA(Device,Port,DC_DVPLEX,nil,nil);
    下面的代码可以获得一个打印机最多能复制的份数:
    DeviceCapabilitiesA(Device,Port,DC_COPIES,nil,nil);
    使用GetDeviceCaps()函数确定所选设备的特定属性。在某些情况下,GetDeviceCaps()将返回所需
    要的值。下面的代码以毫米为单位返回打印机设备的宽度:
    GetDeviceCaps(Printer.Handle,HORISIZE);
    在另一些情况下,GetDeviceCaps()返回一个整数,这个整数经过位屏蔽可以获得打印机的某一性
    能。例如,GetDeviceCaps()方法返回这样的整型值:
    RCaps:=GetDeviceCaps(Printer.Handle,RASTERCAPS);
    然后,通过AND运算符屏蔽出RC_BANDING字段,进而确定打印机是否支持分段打印技术。
    (RCapsandRC_BANDING)=RC_BANDING
    ***************
    获取打印机状态信息
    var 
    pinfo: pPRINTERINFO2; 
    pprt,a: Cardinal; 
    b:PDWORD; 
    begin 
    b:=allocmem(256); 
    pinfo:=AllocMem(1000); 
    if OpenPrinter('HP DJ 200',pprt,nil) then 
    begin 
    a:=1000; 
    if getprinter(pprt,2,pinfo,a,b) then 
    showmessage(pinfo.pPrinterName+' ststus:'+inttostr(pinfo.Status)); 
    ClosePrinter(pprt); 
    end; freemem(b); 
    freemem(pinfo); 
    end; PRINTER_INFO_2.Status : 
    Windows NT: 
    PRINTER_STATUS_PAUSED 
    PRINTER_STATUS_PENDING_DELETION 
    Windows 95: 
    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 
      

  9.   

    csdn上的高手们应该提供几个完整的例程让初学者学习用(注释应该完全)
      

  10.   

    sun417(K哥) 真是言之有理呀