1) Построить массив количеств по первым байтам символов. Явно школьная задачка, потому пропускаю случай с не-ASCII символами, иероглифами и прочим UTF:
Код:
counts: array[0..255] of integer;
...
s := AnsiLowerCase(Edit.Text);
for i := 1 to length(s) do
inc(counts[byte(s[i])]);
2) Построить массив индексов. Заполнить массив числами от 0 до 255 и отсортировать, в качестве значения для сортировки используя counts[indexes[i]].
Код:
indexes: array [0..255] of byte;
...
for i := 0 to 255 do
indexes[i] := i;
Sort(indexes, counts); // <- пузырьковую сортировку нагуглить и подправить
3) Распечатать массив индексов и соответствующих им количеств из массива counts.