Fórum Informação sobre o S.O. #410457

12/12/2011

0

Saudações a todos. Criei uma Unit uFuncoes e uma rotina, na verdade repliquei do curso de da própria DevMedia sobre sistema de controle de ponto e essa unit dá problema na função getSO que retorna uma string.
Como sou novato em Delphi fiquei perdido e espero que possam me ajudar.

unit uFuncoes;

interface

uses Windows, IniFiles;
        
  function getMemoriaFisica : Integer;
  function getMemoriaFisicaMB : Integer;
  function getSO : string;
  function getIni(lcIni, lcSessao, lcSubSessao : string) : string;
  procedure setIni(lcIni, lcSessao, lcSubSessao, lcValor : string);

implementation
  //funcao que retorna o tamanho da memoria fisica
  function getMemoriaFisica : Integer;
  var
    {
    typedef struct _MEMORYSTATUS
    DWORD dwLength;         //sizeof (MEMORYSTATUS)
    DWORD dwMemoryLoad;     //percentual de memoria em uso
    DWORD dwTotalPhys;      //bytes de memoria fisica
    DWORD dwAvailPhys;      //bytes livres de memoria fisica
    DWORD dwTotalPageFile;  //bytes de paginacao do arquivo
    DWORD dwAvailPageFile;  //bytes livres de paginacao do arquivo
    DWORD dwTotalVirtual;   //byte em uso de espaco de endereco
    DWORD dwAvailVirtual;   //bytes livres
    }
    loMemoryStatus : TMemoryStatus;
  begin
    loMemoryStatus.dwLength := sizeof(loMemoryStatus);
    GlobalMemoryStatus(loMemoryStatus);
    Result := loMemoryStatus.dwAvailPhys;
  end;

  //funcao que retorna o tamanho da memoria fisica em megabytes
  function getMemoriaFisicaMB : Integer;
  begin
    Result := getMemoriaFisica div 1024;  //obtem o tamanho em kilobytes
    Result := Result div 1024;  //obtem o tamanho em megabytes
  end;

  //funcao que retorna informacoes sobre o Sistema Operacional
  //{
  function getSO : string;
  var
    loInfo : TOsVersionInfo;
  begin
    loInfo.dwOSVersionInfoSize := SizeOf(TOSVersionInfo);
    if GetVersionEx(loInfo) then
    begin
      if loInfo.dwPlatformId = VER_PLATAFORM_WIN32s then
        Result := Microsoft Windows 95
      else if loInfo.dwPlatformId = VER_PLATAFORM_WIN32_WINDOWS then
        Result := Microsoft Windows 95 Osr2 / 98
      else
        Result := Microsoft Windows NT;
    end
    else
      Result := Não foi possivel descobrir S.O.;
  end;
  //}

  procedure setIni(lcIni, lcSessao, lcSubSessao, lcValor : String);
  var
    loIni : TIniFile;
  begin
    loIni := TIniFile.Create(lcIni);
    try
      loIni.WriteString(lcSessao, lcSubSessao, lcValor);
    finally
      loIni.Free;
    end;
  end;

  function getIni(lcIni, lcSessao, lcSubSessao : String) : String;
  var
    loIni : TIniFile;
  begin
    loIni := TIniFile.Create(lcIni);
    try
      Result := loIni.ReadString(lcSessao, lcSubSessao, );
    finally
      loIni.Free;
    end;
  end;
end.


Os erros ao tentar compilar seguem abaixo:
[Error] uFuncoes.pas(51): Undeclared identifier: VER_PLATAFORM_WIN32s
[Warning] uFuncoes.pas(51): Comparing signed and unsigned types - widened both operands
[Error] uFuncoes.pas(53): Undeclared identifier: VER_PLATAFORM_WIN32_WINDOWS
[Warning] uFuncoes.pas(53): Comparing signed and unsigned types - widened both operands
[Fatal Error] Ponto.dpr(9): Could not compile used unit uFuncoes.pas

Espero que eu tenha sido claro e que vocês possam me ajudar.
Mario Junior

Mario Junior

Responder

Posts

12/12/2011

Marcelo Fernandes

Pelo visto vc esqueceu de copiar algum unit que contem estas constantes VER_PLATAFORM_WIN32s
Responder

Gostei + 0

12/12/2011

Mario Junior

Meu nobre catataw, na verdade a unit Windows que é a responsável pela constante está declarada no topo o problema eu já descobri.
Eu declarei VER_PLATAFORM_WIN32s e o correto é VER_PLATFORM_WIN32s.

Percebeu a diferença?

Depois que eu corrigi, compilou normalmente.

Agradeço a atenção.
Responder

Gostei + 0

12/12/2011

Mario Junior

Meu nobre catataw, na verdade a unit Windows que é a responsável pela constante está declarada no topo o problema eu já descobri.
Eu declarei VER_PLATAFORM_WIN32s e o correto é VER_PLATFORM_WIN32s.

Percebeu a diferença?

Depois que eu corrigi, compilou normalmente.

Agradeço a atenção.


Detalhe importante: Como finalizo/concluo um tópico?
Risos...
Responder

Gostei + 0

13/12/2011

Mario Junior

Resolvido.
Responder

Gostei + 0

15/12/2011

Wilson Junior

Não se esqueça sempre de finalizar os tópicos.
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar