[Back to NETWORK SWAG index]  [Back to Main SWAG index]  [Original]

{
-> I don't have an answer to your question, but would you happen to know
-> how to return a user's full name (as stored in syscon)?  Thanks.

I assume you already have the user's login name.  Here is a procedure
that will get a user's full name.  If you are going to do a lot of
Netware programming I suggest you get "Programmers Guide to Netware" by
Charles Rose. ISBN # 0-07-607029-8.  It documents all of the Netware
functions and also talks about IPX/SPX programming.
}

Uses
  Dos;

Var
  Regs : Registers;

Function Full_Name(User_Name : String) : String;
Type
  RequestBuffer = Record
    RequestBufferLength : Word;
    Code                : Byte;
    ObjectType          : Word;
    ObjectNameLength    : Byte;
    ObjectName          : Array[1..48] of char;
    SegmentNumber       : Byte;
    PropertyNameLength  : Byte;
    PropertyName        : Array[1..15] of char;
  end;

  ReplyBuffer = Record
    ReplyBufferLength : Word;
    PropertyValue     : Array[1..128] of char;
    MoreSegments      : Byte;
    PropertyFlags     : Byte;
  end;

Var
  Request : RequestBuffer;
  Reply   : ReplyBuffer;
  PropertyName : String[15];
  Counter : Byte;
  Temp    : String[128];

begin
  PropertyName := 'IDENTIFICATION';
  Request.RequestBufferLength := SizeOf(Request) - 2;
  Request.Code := $3D;
  Request.SegmentNumber := 1;
  Request.ObjectType := $0100;
  Request.ObjectNameLength := SizeOf(Request.ObjectName);
  FillChar(Request.ObjectName, SizeOf(Request.ObjectName), #0);

  For Counter := 1 to length(User_Name) do
    Request.ObjectName[Counter] := User_Name[Counter];

  Request.PropertyNameLength := SizeOf(Request.PropertyName);
  FillChar(Request.PropertyName, SizeOf(Request.PropertyName), #0);

  For Counter := 1 to Length(PropertyName) do
    Request.PropertyName[Counter] := PropertyName[Counter];

  Regs.AH := $E3;
  Regs.DS := Seg(Request);
  Regs.SI := Ofs(Request);

  Reply.ReplyBufferLength := SizeOf(Reply) - 2;
  Regs.ES := Seg(Reply);
  Regs.DI := Ofs(Reply);

  MSDos(Regs);

  Temp := '';
  Counter := 1;
  While (Reply.PropertyValue[Counter] <> #0) do
  begin
    Temp := Temp + Reply.PropertyValue[Counter];
    inc(Counter);
  end;
  Full_Name := Temp;
end;

begin
  Writeln(Full_Name('SOKALSKY'));
end.

[Back to NETWORK SWAG index]  [Back to Main SWAG index]  [Original]