Solusi untuk Kang Opik di Bandung


Aku dapat email dari sahabatku di Bandung:Mas aku ono problem….

TStringList.Sort kenapa gak bisa sorting data 1,2,3,4,10,11,12,11,11,13,15,1,5,9,8,7,7,6 padahal saya dah pake customsort di pass pake @customsortproc function
jadi ujian simulasi pemodelan aku gagal? 😦
Thanks============================================================

Dear Kang Opik,

TStringList itu menghendaki string untuk setiap elemennya. Jadi custom sort harus mengintegerkan dulu nilai dalam elemennya agar bisa disorting secara numerik. Kalau sorted biasa, akan disort secara alphabetik, di mana 11 akan lebih duluan muncul dibanding 2 pada sorting ascending / menaik. Solusinya, ubah dulu nilai string menjadi integer seperti pada contoh berikut:

1. New Project
2. Double klik di form
3. Replace even FormCreate berikut menjadi:

procedure Tform1.FormCreate(Sender: TObject);

function CustomSort(list: TStringList; index1, index2: integer): integer;
begin
if (StrToIntDef(list[index1], 0) > StrToIntDef(list[index2], 0)) then
Result := 1
else if (StrToIntDef(list[index1], 0) < StrToIntDef(list[index2], 0)) then
Result := -1
else
Result := 0;
end;

var
a: TStringList;
begin
a := TStringList.Create;

a.Add(’10’);
a.Add(‘1’);
a.Add(‘5’);
a.Add(‘3’);
a.Add(’11’);
a.Add(‘2’);
a.Add(‘6’);

ShowMessage(‘Sebelum disort : ‘ + #13#10 + a.Text);

a.CustomSort(@CustomSort);

ShowMessage(‘Setelah disort : ‘ + #13#10 + a.Text);

a.Free;
end;

Demikian, semoga ada pencerahan.

Diterbitkan oleh wisnuwidiarta

Hi, my name is Wisnu Widiarta. I am a movie lover and love traveling especially camping and doing outdoor activities. Coding and problem solving in general are things I love as well.

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout /  Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout /  Ubah )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.

%d blogger menyukai ini: