为什么这段代码:
w: word;
s: String;
begin
str(w, s);
Run Code Online (Sandbox Code Playgroud)
在XE7中生成此警告:
[dcc32 Warning] Unit1.pas(76): W1057 Implicit string cast from 'ShortString' to 'string'
Run Code Online (Sandbox Code Playgroud)
汤姆
有没有人对Windows 7上的Delphi/Paradox数据库桌面程序的兼容性设置有任何建议,以便在Windows 7(x64)中正确显示?
我们在.exe的"属性"屏幕上的"兼容性"选项卡上尝试了很多选项组合.但是,他们都没有解决我们的问题:
它运行正常,但结构化屏幕上的按钮缺少文本,无法点击.解决方法是使用这些按钮的键盘快捷键,但显然,尽管可行,但这并不理想.
先发制人散文:是的,我们知道我们处于冒险的境地,需要从Paradox迁移出来,Paradox将在某些未来版本的Windows中得不到支持.(但是,我们有一百多万行代码,迁移并不容易......)
我们正在Delphi XE5(即将成为DX)中将近200万行代码从BDE迁移到SQL Server.
我们遇到了一个大问题.
我们一直在使用ADO,但微软未能在同时具有单引号和井号的字符串上实现.Locate.例:
TADOQuery1.Locate('FieldName', '2x4'' 10#', [])
Run Code Online (Sandbox Code Playgroud)
失败了:
参数类型错误,超出可接受的范围,或彼此冲突.
Microsoft的ADO文档声明这将失败.我们可以在ADODB.pas中看到它发生.对于简单的一个变量定位和定位包含多个变量.
我们没有选择在WHERE字符串的标准查询中进行这些定位,因为它们处于紧密循环中.
问题:FireDAC有这个问题吗?有人可以帮我们一个忙,实际上尝试以上.在FireDac中定位吗?
从ADO迁移到Firedac会遇到什么令人不快的"惊喜"?
谢谢.
我为什么这样做:
SELECT OBJECT_NAME(OBJECT_ID) AS DatabaseName, last_user_update,*
FROM sys.dm_db_index_usage_stats
WHERE OBJECT_ID=OBJECT_ID('TestTableName')
Run Code Online (Sandbox Code Playgroud)
我得到两条记录而不是一条记录吗?
我打算使用last_user_update来确定先前调用查询的某些本地缓存数据是否是最新的,或者是否因为表已更改而过期.
last_user_update列在此查询返回的两个记录中都相同.我可以只使用第一条记录中的值,还是可能会有所不同?
请参阅下面的屏幕截图获取结果
DatabaseName last_user_update database_id object_id index_id user_seeks user_scans user_lookups user_updates last_user_seek last_user_scan last_user_lookup last_user_update system_seeks system_scans system_lookups system_updates last_system_seek last_system_scan last_system_lookup last_system_update
TestTableName 2016-04-27 07:53:51.740 5 939150391 1 0 101556 101557 6 NULL 2016-04-28 07:27:17.933 2016-04-28 07:27:17.927 2016-04-27 07:53:51.740 0 3 0 0 NULL 2016-04-27 07:52:49.203 NULL NULL
TestTableName 2016-04-27 07:53:51.740 5 939150391 2 101559 3 0 6 2016-04-28 07:27:17.927 2016-04-26 17:31:21.200 NULL 2016-04-27 07:53:51.740 …
Run Code Online (Sandbox Code Playgroud)