PDA

Ver la Versión Completa : como saber el monbre del equipo


armando
08-03-2004, 20:23:00
hola a todos
estoy haciendo una aplicacion en delphi para windows 2000, en la cual cada usuario que ingresa se registra en una tabla echa enparadox
y necesito tambien registrar la maquina en la cual esta ingresando al programa

ya utilice este codigo

function ComputerName: string;
var
Buffer: array[ 0..MAX_COMPUTERNAME_LENGTH ] of Char;
MaxSize: Integer;
begin
MaxSize := SizeOf( Buffer );
if not GetComputerName( @Buffer, MaxSize ) then
raise Exception.Create( 'No puedo determinar el nombre de la máquina' );
Result := StrPas( @Buffer );
end;

pero me saca el siguiente error de parametros no identificados
que estare haciendo mal o me falta algo???
:confused:
espero su ayuda

delphi.com.ar
08-03-2004, 21:00:20
Seguramente este código no te compila porque el segundo parámetro de GetComputerName a partir de Delphi 4, pasó a ser Cardinal, en las versiones anteriores era Integer. Este parámetro es del tipo var (por referencia) y el compilador exige que sean del mismo tipo en el caso que sean parámetros tipados. Posiblemente este código sea demasiado viejo, solo tendrías que definir la variable MaxSize como Cardinal.

Saludos!

DarkByte
08-03-2004, 22:03:29
Extraido de trucomanía, sacar el nombre e ip de la computadora local:

Si no quieres complicarte la vida, usa el componente TCP que tienes en la paleta de componentes de
internet y bastará con que leas sus propiedades LocalHostName y LocalIp
Por ejemplo:

Memo1.Lines.Add(TCP1.LocalHostName);
Memo1.Lines.Add(TCP1.LocalIp);





Si no quieres usar el componente TCP puesto que es un OCX que luego da más complicaciones a la
hora de instalarlo en otra máquina... puedes usar este otro método para leerlo directamente:

-Crea una form (Form1) y pon en ella un TButton (Button1) y un TMemo (Memo1)
-Incluye 'Winsock' en la parte uses
-En el evento OnCreate de la form incluye éste código:

procedure TForm1.FormCreate(Sender: TObject);
var
wVersionRequested : WORD;
wsaData : TWSAData;
begin
{Start up WinSock}
wVersionRequested := MAKEWORD(1, 1);
WSAStartup(wVersionRequested, wsaData);
end;

-En el evento OnClick del Button1 pon este código:

procedure TForm1.Button1Click(Sender: TObject);
var
p : PHostEnt;
s : array[0..128] of char;
p2 : pchar;
begin
{Get the computer name}
GetHostName(@s, 128);
p := GetHostByName(@s);
Memo1.Lines.Add(p^.h_Name);
{Get the IpAddress}
p2 := iNet_ntoa(PInAddr(p^.h_addr_list^)^);
Memo1.Lines.Add(p2);
end;

-Finalmente, en el evento OnDestroy de la Form1 pon este código:

procedure TForm1.FormDestroy(Sender: TObject);
begin
{Shut down WinSock}
WSACleanup;
end;

y ya está...

Espero que te valga..

DarkByte
08-03-2004, 22:06:03
Vaya tocho... xD