いつもお世話になっております。
早速ですが質問させていただきます。
wk_Curr : array[1..10] of String;
for i := 1 to 10 do
begin
wk_Curr[i] := TEdit(FindComponent('Edit' + IntToStr(i))).Text;
end;
上記のような配列を昇順に並び替え、再びエディットに表示するというものです。
何か適当な関数、方法などありましたらご教授願います。
よろしくお願いします。
TStringListのSortを利用した方が楽なのでは?
>>Basser様
ご返答ありがとうございます。
TStringListを使い方がよく分からなかったのですが何とかソースを組みました・・・が、TStringListのSortを使用すると文字列のソート順になってしまいました。
しかし、金額をソートしたいのです。言葉足らずで申し訳ございませんでした。
配列では昇順にソートする関数などはやはりないのでしょうか?
引き続き皆様のお知恵をお貸しください。
よろしくお願いします。
そのような場合はTStringList.CustomSortを使用します。
下記が例です
// 金額比較用
function PriceCompare(List: TStringList; Index1, Index2: Integer): Integer;
var
C1, C2: Currency;
begin
C1:= StrToCurr(List[Index1]);
C2:= StrToCurr(List[Index2]);
if C1 < C2 then Result:= -1 else
if C1 > C2 then Result:= 1 else Result:= 0;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
Buffer: TStringList;
Edits : TList;
I: Integer;
begin
Edits := TList.Create;
Buffer:= TStringList.Create;
try
for I:= 1 to 10 do
begin
Edits.Add(FindComponent('Edit' + IntToStr(I)));
Buffer.Add(TEdit(Edits[Edits.Count - 1]).Text);
end;
Buffer.CustomSort(PriceCompare);
for I:= 0 to Buffer.Count - 1 do
TEdit(Edits[I]).Text:= Buffer[I];
finally
Buffer.Free;
Edits.Free;
end;
end;
>>Basser様
ご丁寧な返信ありがとうございます。
Basser様のソースを参考にさせて頂き解決しました。
ご教授ありがとうございました。
ツイート | ![]() |