home *** CD-ROM | disk | FTP | other *** search
/ The World of Computer Software / World_Of_Computer_Software-02-387-Vol-3of3.iso / w / wnode230.zip / WNLDEMO.PAS < prev    next >
Pascal/Delphi Source File  |  1993-03-14  |  5KB  |  174 lines

  1. Program WNLDemo;
  2. { Demo program for unit WNode.Pas - See WNode.Pas for reference }
  3.  
  4. Uses
  5.    Crt,WNodelst,Utils;
  6.  
  7. Const
  8.    DefaultZone=2;
  9.  
  10. Procedure Split_Address(Address:String;Var Zona,Net,Nodo,Point:Integer);
  11. Var
  12.    C:Byte;
  13.    MomStr:String[5];
  14.  
  15. Begin
  16.    Zona:=-1;
  17.    Net:=-1;
  18.    Nodo:=-1;
  19.    Point:=-1;
  20.    Address:=Word_UpCase(Address);
  21.    While Pos('ALL',Address)<>0 do
  22.    Begin
  23.       Address[Pos('ALL',Address)]:='*';
  24.       Delete(Address,Pos('*LL',Address)+1,2);
  25.    end;
  26.    For C:=1 to Length(Address) do
  27.    Begin
  28.       If not(Address[C] in ['0'..'9','/','*',':','.']) then
  29.       Begin
  30.          Zona:=-2;Net:=-2;Nodo:=-2;Point:=-2;
  31.       end;
  32.    end;
  33.    If (Address[1]<>'*') and (Zona<>-2) then
  34.    Begin
  35.       Address:=Address+' ';
  36.       If (Pos(':',Address)<>0) then
  37.          Zona:=Val2(Copy(Address,1,Pos(':',Address)-1))
  38.       else
  39.          Zona:=DefaultZone;
  40.       Delete(Address,1,Pos(':',Address));
  41.       If Address[1]='*' then
  42.       Begin
  43.          Net:=-1;
  44.          Nodo:=-1;
  45.          Point:=-1;
  46.       end
  47.       else
  48.       Begin
  49.          If Pos('/',Address)<>0 then
  50.          Begin
  51.             Net:=Val2(Copy(Address,1,Pos('/',Address)-1));
  52.             Delete(Address,1,Pos('/',Address));
  53.          end;
  54.          If Pos('.',Address)<>0 then
  55.          Begin
  56.             Nodo:=Val2(Copy(Address,1,Pos('.',Address)-1));
  57.             Delete(Address,1,Pos('.',Address));
  58.             If Address[1]='*' then
  59.                Point:=-1
  60.             else
  61.                Point:=Val2(Copy(Address,1,Pos(' ',Address)-1));
  62.          end
  63.          else
  64.          Begin
  65.             MomStr:=Copy(Address,1,Pos(' ',Address)-1);
  66.             If MomStr='*' then
  67.             Begin
  68.                Nodo:=-1;
  69.                Point:=-1;
  70.             end
  71.             else
  72.             Begin
  73.                Nodo:=Val2(MomStr);
  74.                Point:=0;
  75.             end;
  76.          end
  77.       end
  78.    end;
  79. end;
  80.  
  81. Var
  82.    SysStr:String;
  83.    Find:FindNodeRec;
  84.    Zona,Net,Nodo,Point:Integer;
  85.    Ok:Boolean;
  86.    FlagStr:String;
  87.    Found:Integer;
  88.  
  89. Begin
  90.    Ok:=InitNodeList('d:\fd\nodelist'); { Place here your directory }
  91.    If Ok then
  92.    Repeat
  93.       ClrScr;
  94.       Writeln('Simple test program for W-Nodelist');
  95.       Writeln;
  96.       Writeln('1 - Search by Sysop''s name (FindFirstSysop)');
  97.       Writeln('2 - Search by address (FindFirstNode)');
  98.       Writeln('3 - Non-indexed search by flag');
  99.       Writeln('X - Exit');
  100.       Writeln;
  101.       Write('Selection (1,2,3,X):');
  102.       Readln(SysStr);
  103.       If SysStr='1' then
  104.       Begin
  105.          Write('Sysop''s name (or initial part of it):');
  106.          Readln(SysStr);
  107.          FindFirstSysop(SysStr,Find);
  108.          With Find.BBSRecord do
  109.          While SysopName<>'' do
  110.          Begin
  111.             Write(SysopName,' on ');
  112.             Writeln(Zone,':',Net,'/',Node,'.',Point,' - ',BBSName);
  113.             Writeln('Speed:',BaudRate,'  Flags:',Flags);
  114.             FindNextSysop(Find);
  115.          end;
  116.          Writeln('End of list. Press enter for more.');
  117.          Readln;
  118.       end
  119.       else
  120.       If SysStr='2' then
  121.       Begin
  122.          Write('Address (''ALL'' macros are ammitted):');
  123.          Readln(SysStr);
  124.          Split_Address(SysStr,Zona,Net,Nodo,Point);
  125.          FindFirstNode(Zona,Net,Nodo,Point,Find);
  126.          With Find.BBSRecord do
  127.          While SysopName<>'' do
  128.          Begin
  129.             Write(SysopName,' on ');
  130.             Writeln(Zone,':',Net,'/',Node,'.',Point,' - ',BBSName);
  131.             Writeln('Speed:',BaudRate,'  Flags:',Flags);
  132.             FindNextNode(Find);
  133.          end;
  134.          Writeln('End of list. Press enter for more.');
  135.          Readln;
  136.       end
  137.       else
  138.       If SysStr='3' then
  139.       Begin
  140.          Write('Write the flag you want to look for:');
  141.          Readln(SysStr);
  142.          Found:=0;
  143.          SysStr:=Word_UpCase(SysStr);
  144.          FindFirstNode(All,0,0,0,Find);
  145.          With Find.BBSRecord do
  146.          While SysopName<>'' do
  147.          Begin
  148.             FlagStr:=','+Flags+',';
  149.             If Pos(SysStr,','+FlagStr+',')<>0 then
  150.             Begin
  151.                Write(SysopName,' on ');
  152.                Writeln(Zone,':',Net,'/',Node,'.',Point,' - ',BBSName);
  153.                Writeln('Speed:',BaudRate,'  Flags:',Flags);
  154.                Inc(Found);
  155.                If Found mod 12=0 then
  156.                Begin
  157.                   Write('More...');
  158.                   Readln;
  159.                   Writeln;
  160.                end;
  161.             end;
  162.             FindNextNode(Find);
  163.          end;
  164.          Writeln('There are ',Found,' nodes with ',SysStr,' flag.');
  165.          Writeln('End of list. Press enter to continue.');
  166.          Readln;
  167.       end;
  168.    Until SysStr[1] in ['X','x']
  169.    else
  170.       Writeln(#7+'Check your nodelist files!');
  171.    CloseNodeListFiles;
  172.    ClrScr;
  173. end.
  174.