对TGuid列表进行排序(如TGuid)的又好又快的方法是什么?我原以为只使用SysUtils.CompareMem(P1,P2: Pointer;Length: Integer):Boolean;直到我意识到它返回boolean。
我希望有一些可以与返回整数的CompareText( )或CompareValue( )相媲美的函数,这样它就可以用于排序比较。
我想没有多少人希望对GUIDs...any的想法进行排序?
我想我可以在TGuid记录的内容上调用一些对CompareValue( )的级联调用。我的直觉告诉我一定有更好的方法!
谢谢!
发布于 2009-12-05 10:22:52
如果您使用的是Delphi2009或更高版本,则可以使用TComparer<TGUID>.Compare()或它从Generics.Defaults单元调用的BinaryCompare函数。
发布于 2009-12-05 10:14:10
我不知道Delphi,但通常GUID是一个128-bit hexadecimal string,你可以将子元素转换/解析为无符号(4 *4字节或2*8字节)整数,然后比较它们。一旦你有了这个函数,只需要应用一个标准的排序算法。
如果我的答案不能满足微软使用的specification GUID的RFC,你也许可以想出更好的方法来排序提取GUID中的位级数据。
发布于 2009-12-06 10:46:56
使用GUIDToString并对其执行CompareStr --这不是最快的选择,但它可以工作。
https://stackoverflow.com/questions/1850842
复制相似问题