TJvComputerInfoEx.Create não dá erro na segunda utilização

30/07/2008

1

Caros

Bom Dia

Tentei usar o JvComputerInfoEx da JVCL para saber o nome dos diretórios do Windows, mas ele dá erro ao usar a função na quarta vez em diante, na primeira funciona! Eu coloquei esta funcção dentro de uma UNIT e ela foi declarada na USES dos pas/forms onde foi usada...

Por que da segunda vez em diante não funciona, mesmo no mesmo fomulário onde acabou de funcionar???



function DirLocal: String;
  Var JvComputerInfoEx1: TJvComputerInfoEx;
begin

   JvComputerInfoEx1 := TJvComputerInfoEx.Create(JvComputerInfoEx1) ; // esta linha que dá erro Access Violation...

   // Verificar Diretório para gravação de Configurações.
   if (JvComputerInfoEx1.Folders.CommonAppData<>´´) and (DirectoryExists(JvComputerInfoEx1.Folders.CommonAppData)) and ((IsAdmin and not IsVista) or (IsWin98))  then         // Tenta Colocar no Diretório Comum de Dados dos Aplicativos
      DirLocal := JvComputerInfoEx1.Folders.CommonAppData+´\ADV para Windows\´
   else if (JvComputerInfoEx1.Folders.Profile<>´´) and (DirectoryExists(JvComputerInfoEx1.Folders.Profile)) then         // Tenta Colocar no Diretório de Dados dos Aplicativos - Este é o padrão
      DirLocal := JvComputerInfoEx1.Folders.Profile+´\ADV para Windows\´
   else if (IsAdmin and not IsVista) or (IsWin98) then
      DirLocal := ExtractFilePath(Application.ExeName) // Diretório da Aplicação quando não é Vista, ou Win98, ou XP com Administrador
   else if pos(JvComputerInfoEx1.Folders.ProgramFiles,ExtractFilePath(Application.ExeName)) > 0 then // Só libera se estiver em outro diretório fora dos "Arquivos de Programas"
      DirLocal := ´c:\ADV\Configurações\´
   else
      DirLocal := ExtractFilePath(Application.ExeName); // Só vai para o diretório da aplicação no Vista, se não tiver nenhuma outra opção e se o Software não estiver instalado no Arquivos de Programas
   //+
end;
[/code]


Responder
×
+1 DevUP
Acesso diário, +1 DevUP
Parabéns, você está investindo na sua carreira