[Lazarus-es] M?s dudas

Javier Jait javierjait en yahoo.com
Mie Nov 25 17:13:47 CET 2009


Probaste usando la función "GetComputerName" que viene declarada en lazarus?


Yo hice una prueba, y funcionó bien.

Este es la prueba.
-------
unit Unit1; 

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics,
Dialogs,
  StdCtrls, Windows;

type

  { TForm1 }

  TForm1 = class(TForm)
       Button1: TButton;
       procedure Button1Click(Sender: TObject);
  private
    { private declarations }
  public
    { public declarations }
  end; 

var
  Form1: TForm1; 

implementation

{ TForm1 }

procedure TForm1.Button1Click(Sender: TObject);
var
   pcComputer : PChar;
   dwCSize    : DWORD;
   a : String;
begin
   dwCSize := MAX_COMPUTERNAME_LENGTH + 1;
   GetMem( pcComputer, dwCSize );
   try
      GetComputerName( pcComputer, dwCSize );
      a:=pcComputer;
   finally
      FreeMem( pcComputer );
   end;


     ShowMessage (a);
end;

initialization
  {$I unit1.lrs}

end.
------------------

Fijate que tenés que agregar el uses Windows, para que funcione, sino no
reconoce la función.
También te aclaro que lo estoy compilando en Windows XP.

Saludos
Javier 

-----Mensaje original-----
De: Ismael L. Donis Garc?a [mailto:ismael en citricos.co.cu] 
Enviado el: Miércoles, 25 de Noviembre de 2009 13:01
Para: Spanish version of Lazarus List
Asunto: Re: [Lazarus-es] M?s dudas

Pongo:
    function GetComputerName(lpBuffer: PChar; nSize: DWORD):DWORD; stdcall;
external 'kernel32.dll' name 'GetComputerNameA';

Y me da el error:
udtmmp.pas(30,77) Error: Fields cannot appear after a method or property
definition, start a new visibility section first
udtmmp.pas(30,86) Fatal: Syntax error, ":" expected but "const string" found

Saludos reiterados
=========
¦¦ ISMAEL ¦¦
=========
----- Mensaje original -----
De: "Javier Jait" <javierjait en yahoo.com>
Para: "'Spanish version of Lazarus List'" 
<lazarus-es en lists.lazarus.freepascal.org>
Enviado: martes, 24 de noviembre de 2009 05:09
Asunto: Re: [Lazarus-es] M?s dudas


Probaste agregar uses Windows;??

En el Lazarus está definida así:

function GetComputerName(lpBuffer:LPSTR; nSize:LPDWORD):WINBOOL; external
'kernel32' name 'GetComputerNameA';

Saludos
Javier

-----Mensaje original-----
De: Ismael L. Donis Garc?a [mailto:ismael en citricos.co.cu]
Enviado el: Martes, 24 de Noviembre de 2009 19:31
Para: Spanish version of Lazarus List
Asunto: Re: [Lazarus-es] M?s dudas

Me pide el valor de MAX_COMPUTERNAME_LENGTH aunque para mi entender debe ser
255

Y pienso que GetMem debe ser una función que tampoco tengo, al igual que
Windows.GetComputerName para lo cual pienso que debe haver alguna
declaración

Traté de poner:

Function GetComputerName Lib 'kernel32' Alias 'GetComputerNameA' (lpBuffer:
String, nSize: Long): Long

Pero me dió error. Además de no saber bien donde ubicar la declaración.

Saludos reiterados
=========
¦¦ ISMAEL ¦¦
=========

----- Mensaje original -----
De: "Claudio Romero" <clauslack en gmail.com>
Para: "Spanish version of Lazarus List"
<lazarus-es en lists.lazarus.freepascal.org>
Enviado: martes, 24 de noviembre de 2009 01:56
Asunto: Re: [Lazarus-es] Más dudas


Yo realizo algo parecido pero, utilizo los usuarios del Servidor
Firebird (o del que sea) y grabo los ingresos y salidas al servidor de
Base de datos con trigger(muy sencillo) Incluso los que ingresan con
un navegador (con páginas dinámicas)

Grabo estos datos:
usuario, fecha, hora, accion,coneccion,rol,IP_remoto,proceso_remoto

Si quieres buscar el nombre de la maquina, creo que debes hacer una
funcion para Windows, y otra para Linux.
En Windows obtener el nombre de la pc (funcionaba en Delphi)
function GetComputerName : String;
var
   pcComputer : PChar;
   dwCSize    : DWORD;
begin
   dwCSize := MAX_COMPUTERNAME_LENGTH + 1;
   GetMem( pcComputer, dwCSize );
   try
      if Windows.GetComputerName( pcComputer, dwCSize ) then
         Result := pcComputer;
   finally
      FreeMem( pcComputer );
   end;
end;

En linux, esta el comando hostname, ifconfig y otros mas (podrias usar
TProcess)
No se si fpc tiene funciones para esto.

Pero me parece que con 2 trigers en la base es mas limpio, y transparente.
Lo otro es mas complicado de programar (ademas que te pueden cambiar
el nombre de la pc tranquilamente).

Saludos

_______________________________________________
Lazarus-es mailing list
Lazarus-es en lists.lazarus.freepascal.org
http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es



_______________________________________________
Lazarus-es mailing list
Lazarus-es en lists.lazarus.freepascal.org
http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es


_______________________________________________
Lazarus-es mailing list
Lazarus-es en lists.lazarus.freepascal.org
http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es



_______________________________________________
Lazarus-es mailing list
Lazarus-es en lists.lazarus.freepascal.org
http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es





More information about the Lazarus-es mailing list