Jak posortować listę stringów o takiej postaci:
0;1;20k;100k;1M;1,5M;2M? (oczywiście są to liczby)

Na formatce znajduje się: przycisk i checklistbox

Moja propozycja (nie działa - wysypuje się przy 1M i 2M):

repeat
l:=0;
for j:=0 to (form2.CheckListBox1.Count - 2) do
begin
z:=0;

c:=AnsiEndsStr('k',form2.CheckListBox1.Items.Strings[j]);
d:=AnsiEndsStr('M',form2.CheckListBox1.Items.Strings[j]);
e:=AnsiEndsStr('k',form2.CheckListBox1.Items.Strings[j+1]);
f:=AnsiEndsStr('M',form2.CheckListBox1.Items.Strings[j+1]);

x:=AnsiLeftStr(form2.CheckListBox1.Items.Strings[j],length(form2.CheckListBox1.Items.Strings[j])-1);

y:=AnsiLeftStr(form2.CheckListBox1.Items.Strings[j+1],length(form2.CheckListBox1.Items.Strings[j+1])-1);

if (c=true)
then
begin
a:=strtofloat(x)*1000;
z:=1;
end;
if (d=true)
then
begin
a:=strtofloat(x)*1000000;
z:=1;
end;
if (e=true)
then
begin
b:=strtofloat(y)*1000;
z:=1;
end;
if (f=true)
then
begin
b:=strtofloat(y)*1000000;
z:=1;
end;
if z=0 then
begin
a:=strtofloat(form2.CheckListBox1.Items.Strings[j]);
b:=strtofloat(form2.CheckListBox1.Items.Strings[j+1]);
end;

if (a>b)then begin
form2.CheckListBox1.Items.Move(j,j+1);
l:=1;
end;
end;
until (l=0);</span>

Jeśli ktoś jest wstanie podpowiedzieć co robię źle lub podać lepszy sposób byłbym bardzo wdzięczny.