Прочитайте имя пользователя для входа в Windows с Ada 95 - PullRequest
0 голосов
/ 09 ноября 2011

Есть ли в Ada 95 функция, которая возвращает мне строку, содержащую зарегистрированное имя пользователя в приложении Windows? Спасибо.

Ответы [ 4 ]

3 голосов
/ 09 ноября 2011

Общий ответ заключается в том, чтобы использовать любой механизм, поддерживаемый вашей средой Ada, для вызова собственных функций Win32 API и для вызова функции GetUserName.

2 голосов
/ 10 ноября 2011

Используя идею из комментария @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;

Не чистая Ада 95, но она хорошо подходит (и мне не нужно использовать переключатель gnat05).

2 голосов
/ 09 ноября 2011

Если бы вам было разрешено использовать Ada 2005, вы могли бы использовать пакет Ada.Environment_Variables , чтобы получить значение USERNAME (я думаю, что это правильный env var для Windows? Это USER на Дарвин ...)

2 голосов
/ 09 ноября 2011

Специальный пакет GNAT Ada.Command_Line.Environment может быть доступной альтернативой.

...