Rutiny chtore maju buc na pošilane baličkoch cez IPX protokol

Delphi & Pascal (česká wiki)
Přejít na: navigace, hledání
Kategorija: Pridaňa

Program: Ipx.pas
Subor exe: Sendmess.exeRecmess.exe
Mušiš mac: Net_serv.pasRecmess.pasSendmess.pas

Rutiny chtore maju buc na pošilane baličkoch cez IPX protokol. IPX je gundža protokolov chtora še použiva vof operačnom systeme Novell NetWare. Toten mušice mac instalovany. Vecej možeš znac zos https://cs.wikipedia.org/wiki/IPX/SPX.
{ NET_SERV.PAS                                                       }
{ Rutiny sluziace ku komunikacii IPX protokolom.                     }
{                                                                    }
{ Datum:20.02.2016                              http://www.trsek.com }
 
unit net_serv;
interface
 
var
  username:string;
 
function doplnnuly(num:word;newlen:byte):string;
function _username:string;
function _existspoj:boolean;
 
implementation
uses dos;
 
var
  r: registers;
 
function doplnnuly(num:word;newlen:byte):string;
var
  tmpstr:string;
  ckl:byte;
begin
  str(num:0,tmpstr);
  if length(tmpstr) < newlen then for ckl:=newlen-length(tmpstr) to newlen do tmpstr:='0'+tmpstr;
  doplnnuly:=tmpstr;
end;
 
function _username:string;
const
  lennetwname=15;
var
  bufusername:array[1..lennetwname]of byte;
  bufusernamestr:string[lennetwname];
begin
  fillchar(bufusername,sizeof(bufusername),0);
  fillchar(bufusernamestr,sizeof(bufusernamestr),#0);
  r.ah:=$5e;
  r.al:=0;
  r.ds:=seg(bufusername);
  r.dx:=ofs(bufusername);
  intr($21,r);
  if r.flags and fcarry = fcarry then _username:=''
  else begin
    move(bufusername,ptr(seg(bufusernamestr),ofs(bufusernamestr)+1)^,lennetwname);
    bufusernamestr[0]:=chr(lennetwname);
    _username:=bufusernamestr;
  end;
end;
 
function _existspoj:boolean;
begin
  r.ah:=$dc;
  intr($21,r);
  if (r.al=0) and (r.cl=0) and (r.ch=0) then _existspoj:=false
  else _existspoj:=true;
end;
 
begin
  if _existspoj then username:=_username
  else username:='';
end.