Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Имя пользователя Paradox

Delphi , Базы данных , Paradox

Имя пользователя Paradox

Программисты не пишут нелогичных программ, бывают нелогичные пользователи.

Вы можете выполнить эту задачу, непосредственно обращаясь к BDE. Включите следующие модули в сецию Uses вашего модуля: DBIPROCS, DBIERRS, DBITYPES

Ниже приведена функция с именем ID, возвращающая сетевое имя входа:


function ID: string;
var
  rslt: DBIResult;
  szErrMsg: DBIMSG;
  pszUserName: PChar;
begin
  try
    Result := '';
    pszUserName := nil;
    GetMem(pszUserName, SizeOf(Char) * DBIMAXXBUSERNAMELEN);
    rslt := DbiGetNetUserName(pszUserName);
    if rslt = DBIERR_NONE then
      Result := StrPas(pszUserName)
    else
    begin
      DbiGetErrorString(rslt, szErrMsg);
      raise Exception.Create(StrPas(szErrMsg));
    end;
    FreeMem(pszUserName, SizeOf(Char) * DBIMAXXBUSERNAMELEN);
    pszUserName := nil;
  except
    on E: EOutOfMemory do
      ShowMessage('Ошибка. ' + E.Message);
    on E: Exception do
      ShowMessage(E.Message);
  end;
  if pszUserName <> nil then
    FreeMem(pszUserName, SizeOf(Char) * DBIMAXXBUSERNAMELEN);
end;

Приведенный код - это функция Delphi, называемая ID, которая возвращает логин пользователя сети для текущего пользователя. Функция использует BDE (Borland Database Engine) для достижения этого.

Вот шаг за шагом, что код делает:

  1. Он объявляет несколько переменных:
  2. rslt: Переменная типа DBIResult, используемая для хранения результата процедуры DbiGetNetUserName.
  3. szErrMsg: Переменная типа DBIMSG, используемая для хранения любого сообщения об ошибке, возвращенного процедурой DbiGetErrorString.
  4. pszUserName: Указатель на PChar (динамически выделенная строка), которая будет содержать логин пользователя сети.

  5. Он инициализирует результат и устанавливает его в пустую строку (''). Также он устанавливает pszUserName в nil.

  6. Функция выделяет память для pszUserName с помощью GetMem, а затем вызывает процедуру DbiGetNetUserName с параметром pszUserName. Эта процедура получает логин пользователя сети.

  7. Если rslt равен DBIERR_NONE, то это означает, что операция была успешной, поэтому функция конвертирует pszUserName в строку Delphi с помощью StrPas и присваивает ее результату.

  8. Если rslt не равно DBIERR_NONE, то функция бросает исключение с сообщением об ошибке, возвращенным процедурой DbiGetErrorString.

  9. Затем функция освобождает память, выделенную для pszUserName, с помощью FreeMem.

  10. Функция проверяет, является ли pszUserName не равен nil. Если это так, то она освобождает память снова, чтобы предотвратить утечки памяти.

  11. В случае любых исключений (например, EOutOfMemory или любого другого исключения), функция отображает сообщение об ошибке в окне сообщений.

Вот альтернативный способ достижения этого с помощью встроенной функциональности Delphi:

function GetNetworkLogin: string;
begin
  Result := GetCurrentUserName;
end;

Этот код использует функцию GetCurrentUserName, которая возвращает имя текущего пользователя. Он намного проще и не требует использования процедур BDE.

Функция ID возвращает сетевое имя входа пользователя, используя модули BDE для получения имени и обработки ошибок.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Paradox ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-19 13:29:56
2024-11-21 11:35:56/0.005403995513916/1