{ Retrieve the computer name }function GetComputerName: string;
var
buffer: array[0..MAX_COMPUTERNAME_LENGTH + 1] of Char;
Size: Cardinal;
begin
Size := MAX_COMPUTERNAME_LENGTH + 1;
Windows.GetComputerName(@buffer, Size);
Result := StrPas(buffer);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
ShowMessage(GetComputerName);
end;
{ Set the computer name }function SetComputerName(AComputerName: string): Boolean;
var
ComputerName: array[0..MAX_COMPUTERNAME_LENGTH + 1] of Char;
Size: Cardinal;
begin
StrPCopy(ComputerName, AComputerName);
Result := Windows.SetComputerName(ComputerName);
end;
procedure TForm1.Button2Click(Sender: TObject);
beginif SetComputerName('NewComputerName') then
ShowMessage('Computer Name Reset Setting will be used at next startup.')
else
ShowMessage('Computer Name Not Reset');
end;
Пример программирования на Delphi, демонстрирующий, как получить и установить имя компьютера на системе Windows.
Функция GetComputerName получает текущее имя компьютера, вызывая функцию Windows API GetComputerName. Функция принимает два параметра: буфер для хранения имени компьютера и его размер. Буфер объявлен как массив символов с максимальной длиной MAX_COMPUTERNAME_LENGTH + 1. Функция возвращает полученное имя компьютера в виде строки.
Функция SetComputerName устанавливает новое имя компьютера, вызывая функцию Windows API SetComputerName. Функция принимает два параметра: новое имя компьютера в виде строки и буфер для хранения измененного имени компьютера. Буфер объявлен как массив символов с максимальной длиной MAX_COMPUTERNAME_LENGTH + 1. Функция возвращает логическое значение, указывающее, была ли операция успешна.
Пример предоставляет два кнопки на форме: Button1 получает текущее имя компьютера и отображает его в сообщении, а Button2 устанавливает новое имя компьютера "NewComputerName" и отображает сообщение о успехе или неудаче в зависимости от результата операции.
Вот некоторые предложения по улучшению:
Обработка ошибок: функция SetComputerName не обрабатывает ошибки должным образом. Если функция Windows API возвращает код ошибки, она должна быть проверена и обработана соответствующим образом.
Организация кода: функции и процедуры можно организовать в отдельных модулях или единицах для улучшения структуры и читаемости кода.
Проверка параметров: функция SetComputerName не проверяет свой входной параметр. Она предполагает, что предоставленное имя компьютера является корректным, но это может не быть в определенных ситуациях (например, если имя превышает максимальную длину).
Фидбэк пользователя: пример можно улучшить, добавив более информативный фидбэк для пользователя при установке имени компьютера. Например, можно отобразить сообщение об ошибке с подробным описанием причины неудачи.
Вот альтернативное решение, которое решает эти проблемы:
functionSetComputerName(AComputerName:string):Boolean;varComputerName:array[0..MAX_COMPUTERNAME_LENGTH+1]ofChar;Size:Cardinal;beginifLength(AComputerName)>MAX_COMPUTERNAME_LENGTHthenraiseException.Create('Computer name exceeds maximum length');StrPCopy(ComputerName,AComputerName);Result:=Windows.SetComputerName(ComputerName);ifnotResultthenraiseException.Create('Failed to set computer name: '+SysErrorMessage(GetLastError));end;procedureTForm1.Button2Click(Sender:TObject);begintrySetComputerName('NewComputerName');ShowMessage('Computer Name Reset. Setting will be used at next startup.');exceptonE:ExceptiondoShowMessage(E.Message);end;end;
В этом измененном коде добавлены обработка ошибок, проверка параметров и более информативный фидбэк для пользователя при установке имени компьютера. Также используется обработка исключений для ловли любых ошибок, которые могут возникнуть во время операции.
Статья описывает программный код на языке Delphi, который позволяет получать и изменять имя компьютера.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS