导航:
论坛 -> DELPHI技术
斑竹:liumazi,sephil
作者:
2022/9/20 16:57:39
标题:
Ehlib10.1的控件memTableEh,在Delphi 11.2的64位环境运行,新增或编辑字段值时出错!!!
浏览:1307
加入我的收藏
楼主:
Ehlib10.1的控件memTableEh,在Delphi 11.2的64位环境运行,新增或编辑字段值时出错, D11.1下64位是正常的,如何解决? (D11.2的32位环境下运行是正常的) with memTableEh1 do begin Append; FieldByName('name').AsInteger :='user88'; <<----运行时这里出错 FieldByName('ID').Value :=123; end;
----------------------------------------------
-
作者:
2022/9/20 16:59:37
1楼:
更正如下: Ehlib10.1的控件memTableEh,在Delphi 11.2的64位环境运行,新增或编辑字段值时出错, D11.1下64位是正常的,如何解决? (D11.2的32位环境下运行是正常的) with memTableEh1 do begin Append; FieldByName('name').Value :='user88'; <<----运行时这里出错 FieldByName('ID').Value :=123; end; --------
----------------------------------------------
-
作者:
2022/9/20 20:17:20
2楼:
是Delphi 11.2的问题,还是EhLib VCL 10.1 Build 10.1.031的问题?
----------------------------------------------
-
作者:
2022/9/20 21:54:59
3楼:
应该是Delphi 11.2在64位环境下编译的问题,不知如何解决。 在32位环境下编译是正常的,在D11.1版本的64位编译也是正常的. 升级到11.2的64位就不行了。
----------------------------------------------
-
作者:
2022/9/20 22:35:59
4楼:
FieldByName('name').AsInteger :='user88'; <<----运行时这里出错 AsInteger :='user88' ??? user88?
----------------------------------------------
-
作者:
2022/9/21 8:41:07
5楼:
to 4楼:上面已作更正如下 with memTableEh1 do begin Append; FieldByName('name').Value :='user88'; <<----运行时这里出错 FieldByName('ID').Value :=123; end; ========== 象下面这样写,运行时也是出错的: with memTableEh1 do begin Append; FieldByName('ID').Value :=123; <<----运行时这里出错 FieldByName('name').Value :='user88'; end;
----------------------------------------------
-
作者:
2022/9/21 10:02:26
6楼:
不用ehlib的memTable,用Firedac的MemoryTable,有没有问题?感觉最近版本ehlib质量在下降。
----------------------------------------------
-
作者:
2022/9/21 10:29:01
7楼:
用Firedac的MemoryTable是没问题的,只是老程序用了ehlib的memTable,替换起来麻烦, 它有些特殊的功能,而FDmemtable却没有
----------------------------------------------
-
作者:
limin (limin)
★☆☆☆☆
-
盒子活跃会员
2022/9/24 9:57:51
8楼:
ehlib一些新功能测试不够全面
----------------------------------------------
-
作者:
2022/9/30 12:01:40
9楼:
应该是Delphi 11.2在64位环境下有些规则改变了
----------------------------------------------
-
作者:
2022/10/9 8:56:11
10楼:
原因找到了,参考大神lsuper对AlphaControls控件也出错的回复: ========== 初步看,AlphaControls 对 x64 支持的不严谨,如指针这种 Integer <-> Pointer 错误的写法: PRGBQuad(Integer(srcLine) + Pixel)^ 应该改为 PRGBQuad(NativeInt(srcLine) + Pixel)^ 还有其他如: Message.Result := Integer(FDataLink); 对象转 Integer 在 x64 会丢失内容,等等 至于为啥老版本没啥问题,猜测和 Delphi 11.x 更加新进 & 现代化有关,如支持 ASLR: https://blog.marcocantu.com/blog/rad111_pe_security.html
----------------------------------------------
-
作者:
2022/10/9 8:59:01
11楼:
经测,关闭连接器 ASLR 两个选项,Ehlib10.1的控件memTableEh 不报错了
----------------------------------------------
-
作者:
2022/10/9 9:11:25
12楼:
要彻底解决问题,还是要等Ehlib新版完美支持64位后,再升级。
----------------------------------------------
-