我有一個巨大的用戶列表,每個用戶都有它的ID,但它的ID號被搞砸所以如果有人能告訴我我該怎麼排序號的用戶,每個值都有這種形式如何按第一個數字對列表進行排序?
1:Stackoverflow
or
145000:Google
如果我這樣做手工,我想我會失去我的心,因爲tehere超過70萬個records.Thanks您的時間和幫助....
我有一個巨大的用戶列表,每個用戶都有它的ID,但它的ID號被搞砸所以如果有人能告訴我我該怎麼排序號的用戶,每個值都有這種形式如何按第一個數字對列表進行排序?
1:Stackoverflow
or
145000:Google
如果我這樣做手工,我想我會失去我的心,因爲tehere超過70萬個records.Thanks您的時間和幫助....
提取這樣的數字:
function ID(const str: string): Integer;
var
p: Integer;
begin
p := Pos(':', str);
if p=0 then
raise Exception.CreateFmt('Invalid string format: %s', [str]);
Result := StrToInt(Copy(str, 1, p-1));
end;
一旦你可以提取該ID作爲一個整數,然後可以寫入ac ompare函數。像這樣:
function CompareIDs(List: TStringList; Index1, Index2: Integer): Integer;
begin
Result := CompareValue(
ID(List[Index1]),
ID(List[Index2])
);
end;
CompareValue
是一個RTL函數,返回-1,0或1取決於兩個操作數的相對值。
將這些積木填入TStringList.CustomSort
並完成工作。
MyStringList.CustomSort(CompareIDs);
結果= ValueCompare(ID1,ID2 ); – Marck
@Marck你的意思是'CompareValue'我認爲。我同意最好使用內置的例程,但我不知道它。我會更新答案。 –
看到http://stackoverflow.com/questions/5134712/how-to-get-the-sort-order-in-delphi-as-in-windows-explorer – kludg