如何汉化Delphi3中数据库的出错信息?(100分)

  • 主题发起人 主题发起人 carnationc
  • 开始时间 开始时间
C

carnationc

Unregistered / Unconfirmed
GUEST, unregistred user!
我已经问过一次了,可惜没人回答

我按照翻译区中各位大侠的汉化方法,希望能将Delphi的据库执行时信息汉化
如主键已经存在了,(Key Violation)。
翻译区中说可以重新编译DBconsts.pas,可我在Delphi3中就没发现这个文
件,如果直接利用翻译区的DBconsts.pas编译生成DBconsts.pcu,
我将其放在/lib之下,可再编译我的程序时,总是出错,大意是DB是由另一个
版本的DBconsts编译的,什么意思?难道还要让我再编译一遍Db.pas??

HELP!


 
如果你的delphi3属于C/S版本,应该在source子目录下能找到.
并且编译后的.dcu放在LIB下不该存在版本问题.
 
1. 打开文件consts.pas(在Delphi安装目录的/source/vcl下)

2. 将以下资源字符串常量的值进行改动:

SMsgDlgWarning = '警告';
SMsgDlgError = '错误';
SMsgDlgInformation = '信息';
SMsgDlgConfirm = '确认';
SMsgDlgYes = '(&Y)是';
SMsgDlgNo = '(&N)否';
SMsgDlgOK = '确定';
SMsgDlgCancel = '放弃';
SMsgDlgHelp = '(&H)帮助';
SMsgDlgHelpNone = '无效的帮助';
SMsgDlgHelpHelp = '帮助';
SMsgDlgAbort = '(&A)放弃';
SMsgDlgRetry = '(&R)重试';
SMsgDlgIgnore = '(&I)忽略';
SMsgDlgAll = '(&A)全部';
SMsgDlgNoToAll = '(&o)全不';
SMsgDlgYesToAll = '(&A)全是';

3. 编译成consts.dcu文件,具体方法如下:

建立一application,并引用consts.pas;将consts.pas拷贝到对应的目录下;运行程序,可得到consts.dcu。

4. 并将编译生成consts.dcu文件拷贝到../delphi4.0/lib目录下。
 
uses Db, DBTables,BDE;

if EDBEngineError(E).Errors[0].ErrorCode=DBIERR_KEYVIOL then
E.Message := '登录号不能重复!';
 
用 DELPHI 5 有提供方便的修改工具。
 
关注,关注。
 
我建议用 MessageBox(API) 不是 APPLICATION.MessageBox
 
用下面的dbconsts.pas重新编译,可以解决问题:

{*******************************************************}
{ }
{ Borland Delphi Visual Component Library }
{ }
{ Copyright (c) 1997,99 Inprise Corporation }
{ }
{*******************************************************}

unit DbConsts;

interface

resourcestring
SAutoSessionExists='自动关闭';
SAutoSessionActive='自动打开';
SAutoSessionExclusive='自动释放';
SInvalidFieldSize = '字段大小无效';
SInvalidFieldKind = '字段类型无效';
SInvalidFieldRegistration = '字段注册无效';
SUnknownFieldType = '字段 ''%s'' 类型未知';
SFieldNameMissing = '字段名丢失';
SDuplicateFieldName = '字段名 ''%s'' 重复';
SFieldNotFound = '未发现字段 ''%s''';
SFieldAccessError = '无法将字段 ''%s'' 作为 %s 类型存取';
SFieldValueError = '字段 ''%s'' 取值无效';
SFieldRangeError = '%g 对于字段 ''%s'' 是无效的. 允许的取值范围是从 %g 到 %g';
SInvalidIntegerValue = '''%s'' 对于字段 ''%s'' 不是有效的整数值';
SInvalidBoolValue = '''%s'' 对于字段 ''%s'' 不是有效的布尔值';
SInvalidFloatValue = '''%s'' 对于字段 ''%s'' 不是有效的浮点值';
SFieldTypeMismatch = '字段 ''%s'' 类型不匹配, 希望类型: %s, 实际类型: %s';
SFieldSizeMismatch = '字段 ''%s'' 大小不匹配, 希望大小: %d, 实际大小: %d';
SInvalidVarByteArray = '字段 ''%s'' 变量类型或大小无效';
SFieldOutOfRange = '字段 ''%s'' 取值超界';
SBCDOverflow = '(溢出)';
SFieldRequired = '字段 ''%s'' 必须赋值';
SDataSetMissing = '字段 ''%s'' 没有指定数据集';
SInvalidCalcType = '字段 ''%s'' 不能作为计算字段或查找字段';
SFieldReadOnly = '字段 ''%s'' 不能修改';
SFieldIndexError = '字段索引超界';
SNoFieldIndexes = '目前没有活动的索引';
SNotIndexField = '字段 ''%s'' 没有索引, 无法修改';
SIndexFieldMissing = '无法存取索引字段 ''%s''';
SDuplicateIndexName = '索引名重复 ''%s''';
SNoIndexForFields = '字段 ''%s'' 没有索引';
SIndexNotFound = '未发现索引 ''%s''';
SDuplicateName = '%s 中 ''%s'' 重名';
SCircularDataLink = '不允许循环的数据连接';
SLookupInfoError = '字段 ''%s'' 的查找信息不完整';
SDataSourceChange = '数据源不能修改';
SNoNestedMasterSource = '嵌套的数据集不能拥有主数据源';
SDataSetOpen = '无法在打开的数据集上执行该操作';
SNotEditing = '数据集不在修改或插入模式';
SDataSetClosed = '无法在关闭的数据集上执行该操作';
SDataSetEmpty = '无法在空数据集上执行该操作';
SDataSetReadOnly = '无法修改只读的数据集';
SNestedDataSetClass = '嵌套的数据集必须从 %s 继承';
SExprTermination = '过滤表达式不正常结束';
SExprNameError = '字段名未终止';
SExprStringError = '字符串常数未终止';
SExprInvalidChar = '无效的过滤表达式字符: ''%s''';
SExprNoLParen = '希望 ''('', 但发现了 %s';
SExprNoRParen = '希望 '')'', 但发现了 %s';
SExprNoRParenOrComma = '希望 '')'' 或 '','', 但发现了 %s';
SExprExpected = '希望表达式, 但发现了 %s';
SExprBadField = '字段 ''%s'' 不允许在过滤表达式中使用';
SExprBadNullTest = 'NULL 只允许用于 ''='' 和 ''<>''';
SExprRangeError = '常数超界';
SExprNotBoolean = '字段 ''%s'' 不是布尔类型';
SExprIncorrect = '过滤表达式形式不正确';
SExprNothing = '无';
SExprTypeMis = '表达式类型不匹配';
SExprBadScope = '该操作不能混合合计值和各记录变化的值';
SExprNoArith = '不支持过滤表达式中的算法';
SExprNotAgg = '表达式不是合计表达式';
SExprBadConst = '常数不是正确的 %s 类型';
SExprNoAggFilter = '过滤中不允许合计表达式';
SExprEmptyInList = 'IN 列表不能为空';
SInvalidKeywordUse = '关键字使用错误';
STextFalse = '假';
STextTrue = '真';
SParameterNotFound = '未发现参数 ''%s''';
SInvalidVersion = '无法载入约束参数';
SParamTooBig = '参数 ''%s'', 无法保存大于 %d 字节的数据';
SBadFieldType = '不支持字段 ''%s'' 的数据类型';
SAggActive = '合计处于活动状态时不能修改属性';
SProviderSQLNotSupported = 'SQL 不支持: %s';
SProviderExecuteNotSupported = '运行不支持: %s';
SExprNoAggOnCalcs = '字段 ''%s'' 的类型不能用于汇总计算, 使用内部计算';
SRecordChanged = '记录已由其他用户修改';

{ DBCtrls }
SFirstRecord = '第一条记录';
SPriorRecord = '前一条记录';
SNextRecord = '下一条记录';
SLastRecord = '最后一条记录';
SInsertRecord = '插入记录';
SDeleteRecord = '删除记录';
SEditRecord = '修改记录';
SPostEdit = '保存改动';
SCancelEdit = '取消改动';
SRefreshRecord = '刷新数据';
SDeleteRecordQuestion = '删除记录吗?';
SDeleteMultipleRecordsQuestion = '删除所有选中的记录吗?';
SRecordNotFound = '未发现记录';
SDataSourceFixed = '操作不允许在 DBCtrlGrid 上执行';
SNotReplicatable = '控件不允许在 DBCtrlGrid 中使用';
SPropDefByLookup = '属性已由查找字段定义了';
STooManyColumns = '表格试图显示超过256列';

{ DBLogDlg }
SRemoteLogin = '远程登录';

{ DBOleEdt }
SDataBindings = '数据绑定...';

implementation

end.
 
接受答案了.
 
后退
顶部