Да вам там и ничего особо и не надо изобретать. Убрать все упоминания файла t, слегка переделать этот блок:
Код:
While NOT EOF(t) do
begin
read(t,b[i]);
Memo1.Lines.Add(IntToStr(b[i]));
k:=k+1;
Label10.Caption:=IntToStr(k);
end;
на такой:
Код:
Memo1.Lines.LoadFromFile(OpenDialog1.FileName);
Label10.Caption:=IntToStr(Memo1.Lines.Count);
Далее, сортировку вам надо свою писать или можно воспользоваться встроеной?