使用Ada 95读取Windows登录用户名

时间:2011-11-08 20:03:58

标签: ada

Ada 95中是否有一个函数返回一个包含Windows应用程序中记录的用户名的字符串? 感谢。

4 个答案:

答案 0 :(得分:3)

一般的答案是使用您的Ada环境支持的任何机制来调用本机Win32 API函数,并调用GetUserName函数。

答案 1 :(得分:2)

GNAT特定包Ada.Command_Line.Environment可能是一种可用的替代方案。

答案 2 :(得分:2)

如果您被允许使用Ada 2005,则可以使用包Ada.Environment_Variables来获取USERNAME的值(我认为这是适合Windows的env var?它是USER on达尔文......)

答案 3 :(得分:2)

使用来自@KeithThompson评论的想法,加上@SimonWright USERNAME建议,一种方法是使用代码:

function GetUsername return String is
   function GetEnv (Variable : String) return Interfaces.C.Strings.chars_ptr;
   pragma Import (C, GetEnv, "getenv");

   Command : constant String := "USERNAME";
   Answer_Ptr : constant Interfaces.C.Strings.chars_ptr := GetEnv (Command);
   Answer : constant String := Interfaces.C.Strings.Value (Answer_Ptr);
begin
   return Answer;
end GetUsername;

不是纯粹的Ada 95,但它很合适(我不必使用gnat05开关)。