home *** CD-ROM | disk | FTP | other *** search
/ CD Actual 13 / CDA13.ISO / cdactual / demobin / share / program / Pascal / 10TLST.ZIP / LOGGED.PAS < prev    next >
Encoding:
Pascal/Delphi Source File  |  1990-07-23  |  2.4 KB  |  83 lines

  1. Program Logged;
  2. Uses CRT,PRINTER,DOS,TENTOOLS;
  3.  
  4. { Program to check on WHO is logged to your superstation.
  5. }
  6. TYPE
  7.    LTABRecIndex = Word;
  8.    LTABRec = Record
  9.     ChainPtr : LTABRecIndex;
  10.     NodeName : Array[1..15] of Char;
  11.     LoggedUser : Array[1..8] of Char;
  12.     Filler : Array[1..8] of Char;
  13.    end;
  14.    LTABHeader = Record
  15.     ChainPtr : LTABRecIndex;
  16.     NextFreeChain : LTABRecIndex; {Word Ptr}
  17.    end;
  18.  
  19. VAR
  20.    OutScreen : Text;
  21.    LTABOFS,LTABSEG : Word;
  22.    LTABPtr : ^LTABRec;
  23.    LTAB : Array[1..200] of ^LTabRec;
  24.    Head : ^LTABHeader;
  25.    I,J,LogTotal : Integer;
  26.    NextChain,Test : Word;
  27.    ChatLine : String;
  28.    ToNode : S12;
  29. Begin
  30.    Assign(OutScreen,'');
  31.    LTABOFS:=PreConfig^.PCT_LTAB;
  32.    LTABSEG:=Seg(PreConfig^);
  33.    LTABPtr:=PTR(LTABSEG,LTABOFS);
  34.    Head:=PTR(LTABSEG,LTABOFS-4);
  35. (*
  36.    Writeln(Head^.ChainPtr);
  37.    Writeln(Head^.NextFreeChain);
  38.    For I:=1 to 4 do
  39.     begin
  40.        Writeln(SEG(LTabPtr^),':',OFS(LTabPtr^),'  ',LTabPtr^.ChainPtr);
  41.        Writeln(SEG(LTabPtr^),':',OFS(LTabPtr^)+2,'  ',LTabPtr^.NodeName);
  42.        Writeln(SEG(LTabPtr^),':',OFS(LTabPtr^)+17,'  ',LTabPtr^.LoggedUser);
  43.        Writeln(SEG(LTabPtr^),':',OFS(LTabPtr^)+25,'  ',LTabPtr^.Filler);
  44.        LTABPtr:=PTR(LTABSEG,LTABOFS+(I*Sizeof(LTABRec)));
  45.     end;
  46. *)
  47.    LogTotal:=0;
  48.    NextChain:=Head^.ChainPtr;
  49.    While (NextChain<>$FFFF) do
  50.     begin
  51.        LTAB[LogTotal+1]:=PTR(LTABSEG,NextChain);
  52.        Inc(LogTotal);
  53.        NextChain:=LTab[LogTotal]^.ChainPtr;
  54.     end;
  55.    ChatLine:='';
  56.    If LogTotal>0
  57.    then
  58.     begin
  59.        If ParamCount=0
  60.        then
  61.         begin
  62.            for I:=1 to LogTotal do with LTAB[I]^ do
  63.            Writeln(LoggedUser,' is Logged to you from ',NodeName);
  64.         end
  65.        else
  66.         begin
  67.            ChatLine:=ParamStr(1);
  68.            If ParamCount>1 then
  69.            for I:=2 to ParamCount do Chatline:=Chatline+' '+ParamStr(I);
  70.            For I:=1 to LogTotal do with LTAB[I]^ do
  71.             begin
  72.                For J:=1 to 12 do ToNode[J]:=NodeName[J];
  73.                 ToNode[0]:=#12;
  74.                 Write('Sending message to ',ToNode);
  75.                Test:=Chat(ToNode,Chatline);
  76.                If Test=0 then writeln(' successfully!')
  77.                else writeln(' unsuccessfully (Error: ',Test,')');
  78.             end;
  79.         end;
  80.     end
  81.    else Writeln('No Users Currently Logged to you...');
  82. End.
  83.