type _tab = record name: string; surname: string; points: byte; time: byte; rocedure QSort(adr:pointer;size_elementu:longint;adres:pointer;ile,ilosc_elementow:longint); var ii,i,j,k,l: integer; p1,p2,p11,p22: ^byte; b: byte; q: integer; begin for ii:=1 to ilosc_elementow {*ilosc_elementow} do for i:=0 to ilosc_elementow-2 do begin j:=i+1; p1:=adres; inc(p1,i*size_elementu); p2:=adres; inc(p2,j*size_elementu); for k:=ile-1 downto 0 do begin { przeprowadzam porównanie } p11:=p1; inc(p11,k); p22:=p2; inc(p22,k); q:=0; if p11^>p22^ then q:=2; if q=0 then continue; if q=1 then break; { zamieniam strony } for l:=0 to size_elementu-1 do begin p11:=adr; inc(p11,i*size_elementu+l); p22:=adr; inc(p22,(i+1)*size_elementu+l); b:=p11^; p11^:=p22^; p22^:=b; end; break; end; end; end; procedure TForm1.Button1Click(Sender: TObject); begin QSort(@tab,sizeof(tab),@tab.name,sizeof(tab.name),2); end;