{$I-} uses crt,dos; {***************** SIMPLE NETWORK CHAT BY NAIL (c) 1998 **************** ***************************naildr@kki.net.pl*********************************} const { tu zwiekszyc jak beda problemy z przepustowoscia } {$ifndef nodelay } refresh=1000; {$endif} var flogin,fuser,fdest,conf:text; s,path,message:string; login:string[8]; count:longint; k:char; dirinfo:searchrec; procedure wrt(s:string); begin window(1,2,80,24); gotoxy(1,23); textattr:=14; write(#10,s); window(1,25,80,25); textattr:=$1e; clrscr; write(message); end; procedure sendmessage; begin findfirst(path+'*.log',archive,dirinfo); while doserror=0 do begin assign(fdest,path+copy(dirinfo.name,1,pos('.',dirinfo.name)-1)+'.txt'); rewrite(fdest); writeln(fdest,'<'+login+'> '+message); close(fdest); findnext(dirinfo); end; message:=''; window(1,25,80,25); textattr:=$1e; clrscr; end; begin clrscr; assign(conf,'config'); reset(conf); read(conf,path); textattr:=$09; writeln('NetGledzenie v. 0.666 - by Nail '); writeln(''); write('Podaj LOGIN: '); readln(login); assign(flogin,path+login+'.log'); rewrite(flogin); close(flogin); textmode(c80); textattr:=$70; window(1,1,80,1); clrscr; write(' LOGIN: ',login,' '#179' Ctrl-L - Lista uczestnikow '#179' ESC - Wyjscie'); message:='zalogowal sie!'; sendmessage; wrt('Czesc '+login+'!'); assign(fuser,path+login+'.txt'); count:=0; repeat {$ifndef nodelay} if count>refresh then begin {$endif} reset(fuser); if ioresult=0 then begin while not eof(fuser) do begin readln(fuser,s); wrt(s); end; close(fuser); erase(fuser); end; {$ifndef nodelay} count:=0; end; {$endif} if keypressed then begin k:=readkey; case k of #31..#255:if length(message)<79 then begin message:=message+k; window(1,25,80,25); textattr:=$1e; clrscr; write(message); end; #8:if length(message)>0 then begin message[0]:=chr(ord(message[0])-1); window(1,25,80,25); textattr:=$1e; clrscr; write(message); end; #13:sendmessage; #12:begin findfirst(path+'*.log',archive,dirinfo); while doserror=0 do begin wrt('Wykryto uczestnika: '+ copy(dirinfo.name,1,pos('.',dirinfo.name)-1)); findnext(dirinfo); end; end; end; end; inc(count); until k=#27; message:='wylogowal sie.'; sendmessage; textmode(c80); erase(flogin); erase(fuser); end.