Le code doit être compatible avec D2007 et D2009.
Ma réponse: Merci à tous ceux qui ont répondu, je suis allé avec: p>
function ComputerName : String;
var
buffer: array[0..255] of char;
size: dword;
begin
size := 256;
if GetComputerName(buffer, size) then
Result := buffer
else
Result := ''
end;
7 Réponses :
L'API Windows GetComputername devrait fonctionner. Il est défini dans Windows.Pas. P>
Ceci est une fonction d'API datée qui n'est limitée que 15 caractères. Vous devriez utiliser GetComputerternameEx à la place.
J'utilise ceci, bye p> p>
Une autre approche, ce qui fonctionne bien consiste à obtenir le nom de l'ordinateur via la variable d'environnement. L'avantage de cette approche (ou désavantage en fonction de votre logiciel) est que vous pouvez affecter facilement le programme en fonctionnant facilement comme une machine différente.
Result := GetEnvironmentVariable('COMPUTERNAME');
GetComputername de l'API Windows est la voie à suivre. Voici une enveloppe pour cela.
function GetLocalComputerName : string;
var c1 : dword;
arrCh : array [0..MAX_PATH] of char;
begin
c1 := MAX_PATH;
GetComputerName(arrCh, c1);
if c1 > 0 then
result := arrCh
else
result := '';
end;
Qu'en est-il de cela: de http://exambedelphi.com/delphi.php/tips-and-tricks/delphi-how-to-get-Computer-name/ p> < / p>
Je ne sais pas si vous essayez de répondre à cette vieille question ou si vous essayez d'écrire une nouvelle question ?. Lire le FAQ Comme ce site fonctionne d'une manière différente de celle des forums traditionnels.
Si vous voulez plus que le nom d'hôte, vous avez besoin GetComputerernameex . Comme il existe de nombreuses mauvaises implémentations autour ( max_commuterername_length code> ne suffit pas, et 1024 code> est mauvais), voici la mienne: uses Winapi.Windows;
function GetLocalComputerName(
NameType: TComputerNameFormat = ComputerNameDnsHostname): string;
var
len: DWORD;
begin
len:= 0;
GetComputerNameEx(NameType, nil, len); //get length
SetLength(Result, len - 1);
if not GetComputerNameEx(NameType, PChar(Result), len) then RaiseLastOSError;
end;
Ce code fonctionne bien, sauf lorsque l'ordinateur est sur un groupe de travail simple et essayez d'utiliser GetLocalComputerername (ordinaireNamednslyPalifalifiée) renvoie le nom de l'ordinateur avec une touche n ° 0 (NULL) à la fin, entraînant une mauvaise transformation d'autres charneurs envoyés à une composante mémo comme un journal. Il suffit de résoudre ce problème à vérifier NULL à la fin.
function GetLocalComputerName(
NameType: TComputerNameFormat = ComputerNameDnsHostname): WideString;
var
len: DWORD;
begin
len:= 0;
GetComputerNameEx(NameType, nil, len); //get length
SetLength(Result, len - 1);
if not GetComputerNameEx(NameType, PWideChar(Result), len)
then RaiseLastOSError;
// fix null at end
len := Length(Result);
if (len > 2) and (Result[len] = #0) then
Result := Copy(Result, 1, len-1);
end;
Je le rends habituellement plus court en n'utilisant pas de tampon séparé: setlength (résultat, 256); Setlength (résultat, GetComputerName (PCHAR (résultat), 255));
Stijn, vous n'utilisez certainement certainement pas ce code.
getComputername code> renvoie unbool code> et n'accepte pas un littéral numérique pour son deuxième paramètre.Alister, je vous conseille d'utiliser la constante nommée
max_computerername_length code> pour votre taille de tampon au lieu des numéros magiques.