Да вам там и ничего особо и не надо изобретать. Убрать все упоминания файла 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);
 
Далее, сортировку вам надо свою писать или можно воспользоваться встроеной?