home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Media Share 9
/
MEDIASHARE_09.ISO
/
hamradio
/
wnode230.zip
/
WNLDEMO.PAS
< prev
next >
Wrap
Pascal/Delphi Source File
|
1993-03-14
|
5KB
|
174 lines
Program WNLDemo;
{ Demo program for unit WNode.Pas - See WNode.Pas for reference }
Uses
Crt,WNodelst,Utils;
Const
DefaultZone=2;
Procedure Split_Address(Address:String;Var Zona,Net,Nodo,Point:Integer);
Var
C:Byte;
MomStr:String[5];
Begin
Zona:=-1;
Net:=-1;
Nodo:=-1;
Point:=-1;
Address:=Word_UpCase(Address);
While Pos('ALL',Address)<>0 do
Begin
Address[Pos('ALL',Address)]:='*';
Delete(Address,Pos('*LL',Address)+1,2);
end;
For C:=1 to Length(Address) do
Begin
If not(Address[C] in ['0'..'9','/','*',':','.']) then
Begin
Zona:=-2;Net:=-2;Nodo:=-2;Point:=-2;
end;
end;
If (Address[1]<>'*') and (Zona<>-2) then
Begin
Address:=Address+' ';
If (Pos(':',Address)<>0) then
Zona:=Val2(Copy(Address,1,Pos(':',Address)-1))
else
Zona:=DefaultZone;
Delete(Address,1,Pos(':',Address));
If Address[1]='*' then
Begin
Net:=-1;
Nodo:=-1;
Point:=-1;
end
else
Begin
If Pos('/',Address)<>0 then
Begin
Net:=Val2(Copy(Address,1,Pos('/',Address)-1));
Delete(Address,1,Pos('/',Address));
end;
If Pos('.',Address)<>0 then
Begin
Nodo:=Val2(Copy(Address,1,Pos('.',Address)-1));
Delete(Address,1,Pos('.',Address));
If Address[1]='*' then
Point:=-1
else
Point:=Val2(Copy(Address,1,Pos(' ',Address)-1));
end
else
Begin
MomStr:=Copy(Address,1,Pos(' ',Address)-1);
If MomStr='*' then
Begin
Nodo:=-1;
Point:=-1;
end
else
Begin
Nodo:=Val2(MomStr);
Point:=0;
end;
end
end
end;
end;
Var
SysStr:String;
Find:FindNodeRec;
Zona,Net,Nodo,Point:Integer;
Ok:Boolean;
FlagStr:String;
Found:Integer;
Begin
Ok:=InitNodeList('d:\fd\nodelist'); { Place here your directory }
If Ok then
Repeat
ClrScr;
Writeln('Simple test program for W-Nodelist');
Writeln;
Writeln('1 - Search by Sysop''s name (FindFirstSysop)');
Writeln('2 - Search by address (FindFirstNode)');
Writeln('3 - Non-indexed search by flag');
Writeln('X - Exit');
Writeln;
Write('Selection (1,2,3,X):');
Readln(SysStr);
If SysStr='1' then
Begin
Write('Sysop''s name (or initial part of it):');
Readln(SysStr);
FindFirstSysop(SysStr,Find);
With Find.BBSRecord do
While SysopName<>'' do
Begin
Write(SysopName,' on ');
Writeln(Zone,':',Net,'/',Node,'.',Point,' - ',BBSName);
Writeln('Speed:',BaudRate,' Flags:',Flags);
FindNextSysop(Find);
end;
Writeln('End of list. Press enter for more.');
Readln;
end
else
If SysStr='2' then
Begin
Write('Address (''ALL'' macros are ammitted):');
Readln(SysStr);
Split_Address(SysStr,Zona,Net,Nodo,Point);
FindFirstNode(Zona,Net,Nodo,Point,Find);
With Find.BBSRecord do
While SysopName<>'' do
Begin
Write(SysopName,' on ');
Writeln(Zone,':',Net,'/',Node,'.',Point,' - ',BBSName);
Writeln('Speed:',BaudRate,' Flags:',Flags);
FindNextNode(Find);
end;
Writeln('End of list. Press enter for more.');
Readln;
end
else
If SysStr='3' then
Begin
Write('Write the flag you want to look for:');
Readln(SysStr);
Found:=0;
SysStr:=Word_UpCase(SysStr);
FindFirstNode(All,0,0,0,Find);
With Find.BBSRecord do
While SysopName<>'' do
Begin
FlagStr:=','+Flags+',';
If Pos(SysStr,','+FlagStr+',')<>0 then
Begin
Write(SysopName,' on ');
Writeln(Zone,':',Net,'/',Node,'.',Point,' - ',BBSName);
Writeln('Speed:',BaudRate,' Flags:',Flags);
Inc(Found);
If Found mod 12=0 then
Begin
Write('More...');
Readln;
Writeln;
end;
end;
FindNextNode(Find);
end;
Writeln('There are ',Found,' nodes with ',SysStr,' flag.');
Writeln('End of list. Press enter to continue.');
Readln;
end;
Until SysStr[1] in ['X','x']
else
Writeln(#7+'Check your nodelist files!');
CloseNodeListFiles;
ClrScr;
end.