初学者请教一个问题(50分)

  • 主题发起人 主题发起人 Northwind
  • 开始时间 开始时间
N

Northwind

Unregistered / Unconfirmed
GUEST, unregistred user!
星期天好!
在VB中可以方便的获得出错代码,并进行相应的处理。但是在
DELPHI中如何在Try ... except中获得出错代码?除了一些保留字如:
EDivByZero、ERangeError等,好象并没有提供访问数据库出错的代码,
E.Message 可以获得出错信息,但是出错码如何获得呢?原理书上说了
很多,但是没有源码,哪位高手给写一段出错码如何获得的程序。谢谢!
 
你想要出错代码做什么呢?
我的try...except语句一般都知道什么时候出错才用,
保证程序不出现异常就可以了,或则利用异常处理来实现
特殊数据的获得与判断,没必要要求那么多吧

随便说两句,不用认真
 
有些有胡些没有。
 
ShowMessage(inttostr(GetLastError));
不知道行不行。
 
lanbing1400:
那样Try...except 不就太多了吗?
例如:利用ADOConnection.ConnectionString访问SQL_Server数据库时,
当ADOQuery.Open 时,出现错误,到底是Login/Pass出错呢?还是数据库名
不存在?还是select语句访问的表单不存在引起的错误呢?没有出错码,如何
判断?
 
可以用showmessage调试
 
自己的程序怎么会让它出现数据库名不存在的情况呢?
用户和密码也可以通过读表来完成啊
大多时候我喜欢在程序里完成一些设置,这样可以减少错误的几率

仅供参考
 
zw84611:
我试了一下,inttostr(GetLastError)获得的都是零!
 
你确信有错误吗?
 
lanbing1400:
SQL_Server 的sa密码也能获得吗?请赐教!如果SQL_Server中的数据库或表单
被删除,程序必须要返回正确的信息,因为程序是给别人用的,所以要考虑各种情况。
我的程序里既要访问Access,也要访问SQL。
 
zw84611:

确信!我把sa密码改变,或者把SQL内的数据库名称改变,引起不同的错误,
inttostr(GetLastError)获得的都是零!
 
GetLastError获得的是系统错误,如
0 The operation completed successfully. ERROR_SUCCESS
1 Incorrect function. ERROR_INVALID_FUNCTION
2 The system cannot find the file specified. ERROR_FILE_NOT_FOUND
3 The system cannot find the path specified. ERROR_PATH_NOT_FOUND
4 The system cannot open the file. ERROR_TOO_MANY_OPEN_FILES
5 Access is denied. ERROR_ACCESS_DENIED
......
你那个数据库查询错误在系统错误里没有定义的
 
你现有密码是从那里拿的呢?
如果是用户设置的话,你可以让他在你程序里来设置,这样就可以了
如果都是你设置的话,就更没问题了。
想直接偷偷拿到好象容易:)
 
lanbing1400:
密码是从在参数文件里,sa 的缺省密码是空,但是用户设置的密码可能出错。如果密码
正确但是SQL中要访问的数据库或表被别人删除,程序就要给出明确的错误提示,这样用户
可以一目了然,所以还是需要出错代码。
 
这样很累人的,同时数据表不应该可以让用户自己随意更改,提示可以模糊一点,
“非法用户或数据表已不存在,请检查”就可以了。
这个问题的处理可以交给程序使用者的系统维护员来完成
 
后退
顶部