首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >比较GUID以便我可以按GUID排序

比较GUID以便我可以按GUID排序
EN

Stack Overflow用户
提问于 2009-12-05 10:02:50
回答 4查看 2.4K关注 0票数 4

对TGuid列表进行排序(如TGuid)的又好又快的方法是什么?我原以为只使用SysUtils.CompareMem(P1,P2: Pointer;Length: Integer):Boolean;直到我意识到它返回boolean。

我希望有一些可以与返回整数的CompareText( )或CompareValue( )相媲美的函数,这样它就可以用于排序比较。

我想没有多少人希望对GUIDs...any的想法进行排序?

我想我可以在TGuid记录的内容上调用一些对CompareValue( )的级联调用。我的直觉告诉我一定有更好的方法!

谢谢!

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2009-12-05 10:22:52

如果您使用的是Delphi2009或更高版本,则可以使用TComparer<TGUID>.Compare()或它从Generics.Defaults单元调用的BinaryCompare函数。

票数 14
EN

Stack Overflow用户

发布于 2009-12-05 10:14:10

我不知道Delphi,但通常GUID是一个128-bit hexadecimal string,你可以将子元素转换/解析为无符号(4 *4字节或2*8字节)整数,然后比较它们。一旦你有了这个函数,只需要应用一个标准的排序算法。

如果我的答案不能满足微软使用的specification GUID的RFC,你也许可以想出更好的方法来排序提取GUID中的位级数据。

票数 2
EN

Stack Overflow用户

发布于 2009-12-06 10:46:56

使用GUIDToString并对其执行CompareStr --这不是最快的选择,但它可以工作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1850842

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档