home *** CD-ROM | disk | FTP | other *** search
/ Programmer 7500 / MAX_PROGRAMMERS.iso / PASCAL / ECO30603.ZIP / ECO30603.LZH / ECOLIBCS / DEMOS / INSORT.PAS < prev    next >
Encoding:
Pascal/Delphi Source File  |  1993-03-09  |  1.1 KB  |  51 lines

  1. {$A-,B-,D-,E-,F-,I-,L-,N-,O-,R-,S-,V-}
  2. {$M 65520, 0, 655360}
  3.  
  4. uses
  5.   eco_lib, crt, dos    { all tricks :-)     }
  6.  
  7.   ;
  8.  
  9.  
  10. type
  11.   str96 = string[96];
  12.   str96ptr = ^str96;
  13.  
  14. var
  15.   fin         :                       text;
  16.   filenum, i  :                       word;
  17.   bin         :    array[1..16384] of char;
  18.   allstrs     : array[1..4096] of str96ptr;
  19.  
  20.  
  21.   {$F+}
  22.   function order(var data1, data2): boolean; far;
  23.   begin
  24.     order := str96(pointer(data1)^) < str96(pointer(data2)^)
  25.   end;
  26.   {$F-}
  27.  
  28.  
  29.  
  30.  
  31.  
  32. begin
  33.   starttimer(1);
  34.   writeln(
  35.     'Reading up to ', __pntstr(maxavail), ' bytes from ',
  36.     __slashfil(__normfil(paramstr(1)))
  37.   );
  38.   assign(fin, paramstr(1)); settextbuf(fin, bin); reset(fin); filenum := 0;
  39.   while not eof(fin) do begin
  40.     inc(filenum); new(allstrs[filenum]); readln(fin, allstrs[filenum]^);
  41.   end;
  42.   close(fin);
  43.   writeln('Sorting...');
  44.   __qsortsrt(@allstrs, filenum, sizeof(str96ptr), @order);
  45.   writeln('Writing...');
  46.   assign(fin, paramstr(1)); settextbuf(fin, bin); rewrite(fin);
  47.   for i := 1 to filenum do writeln(fin, allstrs[i]^);
  48.   close(fin);
  49.   writeln('Written in ', getlaptime(1));
  50. end.
  51.