タイトルでは分かりにくいですが
例えば
2,5,4,1,6
のような内容を
1,2,4,5,6
にする方法です(カンマ=#13#10)
扱う数値は1024までで、とんでるところもあります
宜しくお願いしますです
TStringList にコピーして CustomSort でソートしてから、再び Assign() で
戻す。
すみません、サンプルソースがあればお願いします
Memo1.Lines は TStrings なのでこれを対象にして
function StringListValueCompare(List: TStringList; Index1, Index2: Integer): Integer;
var
Value1,Value2:integer;
begin
Value1 := StrToInt(List[Index1]);
Value2 := StrToInt(List[Index2]);
if Value1 = Value2 then
result := 0
else
if Value1 > Value2 then
result := 1
else
result := -1;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
SL:TStringList;
begin
SL := TStringList.Create;
try
SL.Assign(Memo1.Lines);
SL.CustomSort(StringListValueCompare);
Memo1.Lines.Assign(SL);
finally
SL.Free;
end;
end;
有り難うございます。試してみます。
すみません、よく分かりません
StringListValueCompareの実パラメータは何でしょうか?
> すみません、よく分かりません
わかる分からないはともかく、実行はできましたか?
> StringListValueCompareの実パラメータは何でしょうか?
実パラメータってなんですか? CustomSort() から呼ばれているので
ユーザは関係ないのでは?
クイックソートのアルゴリズムを勉強してください。
function StringListValueCompare(List: TStringList; Index1, Index2: Integer): Integer;
は正確にはTMain.がいるのでしょうか?
すみません、
TMain.はフォームのことです
すみません
名前ミス
実行できません
[エラー] Unit1.pas(50): 型に互換性がありません : 通常の手続きとメソッドポインタ
わかりました
StringListValueCompareは宣言しなくて良いんですね
> StringListValueCompareは宣言しなくて良いんですね
メソッドにしては駄目です。他人のコードを試すときは
<そのまま>で実行してください。
ツイート | ![]() |