Lazarus中文社区

 找回密码
 立即注册(注册审核可向QQ群索取)

QQ登录

只需一步,快速开始

Lazarus IDE and 组件 下载地址版权申明
查看: 2708|回复: 1

关于 RealThinClientSdk 一点修改意见, 或者DB.pas的修改

[复制链接]

该用户从未签到

发表于 2014-10-20 23:11:53 | 显示全部楼层 |阅读模式
本帖最后由 wylton 于 2014-10-20 23:40 编辑

realThinClientSdk 的RTCMemDataset 转换TField会出现类型转换不了。特别像 mysql 的语句 id INT UNSIGNED NOT NULL AUTO_INCREMENT 产生的字段栏。
可以在rtcDB.pas 的第739行插入 'if val=ft_LongWord then val:=ft_integer;' ;

另一方法是修改lazarus 本身的DB.pas 文件,
在TField = class(TComponent)里头的protected部分
1.加入'function GetAsLongWord: LongWord; virtual;' 和'procedure SetAsLongWord(Value: LongWord); virtual;' 这两句。大概在340行左右.
2.替换TFieldType。
TFieldType = (ftUnknown, ftString, ftSmallint, ftInteger, ftWord, // 0..4
    ftBoolean, ftFloat, ftCurrency, ftBCD, ftDate, ftTime, ftDateTime, // 5..11
    ftBytes, ftVarBytes,  ftAutoInc, ftBlob, ftMemo, ftGraphic, ftFmtMemo, // 12..18
    ftParadoxOle, ftDBaseOle, ftTypedBinary, ftCursor, ftFixedChar, ftWideString, // 19..24
    ftLargeint, ftADT, ftArray, ftReference, ftDataSet, ftOraBlob, ftOraClob, // 25..31
    ftVariant, ftInterface, ftIDispatch, ftGuid, ftTimeStamp, ftFMTBcd, // 32..37
    ftFixedWideChar, ftWideMemo, ftOraTimeStamp, ftOraInterval, // 38..41
    ftLongWord, ftShortint, ftByte, ftExtended, ftConnection, ftParams, ftStream, //42..48
    ftTimeStampOffset, ftObject, ftSingle); //49..51

3.在fields.inc 中加如相关的事件。
第480行附近插入
function TField.GetAsLongWord: LongWord;
begin
  raise AccessError('LongWord');
end;  
第820行附近插入
procedure TField.SetAsLongWord(Value: LongWord);
begin
  raise AccessError('LongWord');
end;

回复

使用道具 举报

该用户从未签到

发表于 2014-10-21 01:51:20 | 显示全部楼层
一直都是安装好了RTC就是还没有用到,MARK 一下
回复 支持 反对

使用道具 举报

*滑块验证:

本版积分规则

QQ|手机版|小黑屋|Lazarus中国|Lazarus中文社区 ( 鄂ICP备16006501号-1 )

GMT+8, 2025-5-2 02:25 , Processed in 0.055575 second(s), 9 queries , Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表