No to musisz rozdzielić liczby na liczby a tekst jako tekst
zawsze możesz zmienić moją procedurke
type
PDane =^TDane;
TDane = record
cena:real;
nazwa:string;
end;
function Sortowanie(item1,item2:Pointer):integer;
begin
if PDane(Item1).cena<Pdane(item2).cena then result:=-1 else
if Pdane(Item1).Cena>Pdane(item2).Cena then result:=1 else
result:=0;
end;
var
F:TextFile;
lista:TList
t:string;
c:real;
d:PDane;
begin
assignFile(f,'nazwa.tx');
reset(f);
lista:=TList.Create;
while not EOf(f) do
begin
readln(f,cena, t);
new(d);
d.cena:=cena;
d.nazwa:=t;
lista.add(d);
end;
closeFile(f);
lista.sort(Sortowanie);
odczyt danych to chyba sobie poradzisz ... jakbyś miał kłopoty z odczytem ceny (bo nie wiem co delphi lubi bardziej dla liczb zmiennoprzecinkowych czy kropke czy przecinek) to będziesz musiał sobie sam poradzić np przez odczytanie całej lini i pos(' ',odcyztany_string) pozniej pokopiowac to na 2 stringi i StrToFloat zeby zamienic cene .... ewentualnie jeszcze strReplace ten przecinek na kropke bo z tym mogą być problemy (ale oczywiście nie muszą)