home *** CD-ROM | disk | FTP | other *** search
/ HAM Radio 1 / HamRadio.cdr / packet / findx / findx.pas < prev    next >
Pascal/Delphi Source File  |  1990-11-22  |  3KB  |  132 lines

  1. program parse_domain(input, output);
  2. uses Crt, argx;
  3. type
  4.     text_line = string[81];
  5.  
  6. var
  7.     domain: TEXT;
  8.     in_line, last_line: text_line;
  9.     search_string: string[40];
  10.     response: char;
  11.     line_no, args, hits : integer;
  12.     first_time: boolean;
  13.  
  14.  
  15. function upper(instring: string): string;
  16.  
  17. var
  18.     i0 : integer;
  19.  
  20. begin
  21.     upper[0] := chr(length(instring));
  22.     for i0 := 1 to length(instring) do
  23.         if (ord(instring[i0]) > 96)
  24.           and (ord(instring[i0]) < 122) then
  25.             upper[i0] := chr(ord(instring[i0]) - 32)
  26.         else
  27.             upper[i0]    := instring[i0]
  28. end;
  29.  
  30. procedure print_it(out_line: string);
  31.  
  32. var
  33.     i0: integer;
  34.  
  35. begin
  36.     if line_no = 20 then begin
  37.         line_no := 0;
  38.         writeln; writeln('Press ENTER to continue...');
  39.         readln;
  40.         ClrScr;
  41.         end;
  42.  
  43.     for i0 := 1 to length(out_line) do
  44.         if ord(out_line[i0]) < 32 then
  45.             out_line[i0] := chr(32);
  46.     writeln(out_line);
  47.     line_no := line_no + 1
  48. end;
  49.  
  50. function hit: boolean;
  51.  
  52. var
  53.     temp: boolean;
  54.     check_str: string[40];
  55.     last_search, i0 : integer;
  56.  
  57. begin
  58.     temp := false;
  59.     last_search := length(in_line) - length(search_string) + 1;
  60.     if last_search > 0 then begin
  61.         i0 := 1;
  62.         while (not temp) and (i0 <= last_search) do begin
  63.             check_str := copy(in_line,i0,length(search_string));
  64.             if upper(check_str) = upper(search_string) then
  65.                 temp := true
  66.             else
  67.                 i0 := i0 + 1
  68.             end
  69.         end;
  70.     hit := temp
  71. end;
  72.  
  73. begin
  74.     assign(domain,'\domain.txt');
  75.     response := 'y';
  76.     first_time := true;
  77.     while response in ['Y','y'] do begin
  78.         ClrScr;
  79.         line_no := 0;
  80.         hits := 0;
  81.         args := arg_count;
  82.         if (args > 0) and
  83.            first_time then begin
  84.             search_string := arg_string(1);
  85.             first_time := false;
  86.             writeln('Searching for "', search_string, '"...')
  87.             end
  88.         else begin
  89.             write('Enter search string: ');
  90.             readln(search_string)
  91.             end;
  92.         reset(domain);
  93.         readln(domain, in_line);
  94.         last_line := '';
  95.         while not eof(domain) do
  96.             if hit then begin
  97.                 hits := hits + 1;
  98.                 if in_line[1] <> '#' then
  99.                     print_it(last_line);
  100.                 repeat
  101.                     print_it(in_line);
  102.                     last_line := in_line;
  103.                     readln(domain,in_line)
  104.                 until in_line[1] = '#'
  105.                 end
  106.             else begin
  107.                 last_line := in_line;
  108.                 readln(domain, in_line);
  109.                 end;
  110.         writeln;
  111.         if hits < 1 then
  112.             writeln('No matching records!')
  113.         else
  114.             writeln(hits,' matches listed.');
  115.         writeln('Press ENTER to continue...');
  116.         readln;
  117.         if args > 0 then
  118.             response := 'n'
  119.         else begin
  120.             write('Another query? [y|n]: ');
  121.             readln(response)
  122.             end
  123.         end;
  124.     close(domain)
  125.  
  126. end.
  127.  
  128.  
  129.  
  130.  
  131.  
  132.