因为我用了 SQL 的 SELECT ..... Field1 IN (......) 的语法
SQL.ADD('SELECT O.*, C.Name AS CName FROM Objects O, Classes C');
SQL.ADD(' WHERE O.ClassID = C.ID AND O.ClassID IN ' + ClassChecked);而这个括号字符串, ClassChecked, 是从画面上一个带有 check box 的 TreeView.CheckList 去组出来的 (c1, c2, c3, .....) 的字符串, 以套入 SELECT 中符合 SQL 语法现在我要比较 2 次的选取, 在意义上是否等效?
(虽然字符串是不相等的, 但 SQL 语义上是等效的)有谁愿意动动脑, 想一个
function IsClassCheckedEqual(const S1, S2: String): Boolean;一起想喔, 看谁先想出来, 看谁的写法最优秀... 嘻嘻...
SQL.ADD('SELECT O.*, C.Name AS CName FROM Objects O, Classes C');
SQL.ADD(' WHERE O.ClassID = C.ID AND O.ClassID IN ' + ClassChecked);而这个括号字符串, ClassChecked, 是从画面上一个带有 check box 的 TreeView.CheckList 去组出来的 (c1, c2, c3, .....) 的字符串, 以套入 SELECT 中符合 SQL 语法现在我要比较 2 次的选取, 在意义上是否等效?
(虽然字符串是不相等的, 但 SQL 语义上是等效的)有谁愿意动动脑, 想一个
function IsClassCheckedEqual(const S1, S2: String): Boolean;一起想喔, 看谁先想出来, 看谁的写法最优秀... 嘻嘻...
比较 2 次的选取本身沒有意義。
"ClassChecked, 是从画面上一个带有 check box 的 TreeView.CheckList 去组出来的 (c1, c2, c3, .....) 的字符串"﹐ 其實﹐不管選擇次序如何同﹐组出来的ClassChecked是相同的﹐是"不是問題的問題"。
你可能是擔心ClassChecked有復的item?
我觉得还是用集合比较好
还有就zhangqiufk(真言) 说的,用得着比较吗?反正在SQL里都一样!
2. 排序: 我没自己排序, 用的是 TStringList 所以设置 Sorted 为 True, 自动排序了
3. 两个 List 比较: 这就容易了, 既然已排序好了, List1.Strings[I] = List2.String[I], 一对一完全相等, SQL 结果就会等效。