Ir para conteúdo
Fórum Script Brasil
  • 0

[resolvido] Varíavel De Ambiente


Guinho.TI

Pergunta

Sou novo na área e fui solicitado a alterar uma aplicação Delphi.

Para testá-la, fiz uma cópia da mesma para um Servidor de Teste, e automaticamente eu deveria alterar a aplicação para se conectar a ele.

A conexão com o Banco é feita na varíavel de ambiente, mas como eu troquei a aplicação de Servidor, eu não a encontro! Desta forma, eu não consigo alterar a conexão e não tenho como testar.

Gostaria de saber como eu faço para criar uma nova e fazer a chamada a ela, ou como descobrir onde está localizada a existente...

function Configuracao.CarregarDados: Boolean;
var
  arqConfig:TStringList;
  temp:String;
  cont:Integer;
  func:Funcoes;
  retorno:Boolean;  //Valor do retorno da função (se carregou os dados com sucesso ou não)
begin
  retorno := True;
  arqConfig:= TStringList.Create;
  try
    //Lendo a variável do ambiente com o diretório do arquivo de configuração
   temp := GetEnvironmentVariable('Variavel_Ambiente_JOB');

    arqConfig.LoadFromFile(temp);
    //Lendo os dados do arquivo de configuração
    for cont := 0 to arqConfig.Count - 1 do
      //Lendo a connection string
      if (AnsiContainsText(arqConfig[cont], '#CONN_STRING#') = True) then
        begin
          temp := arqConfig[cont];
          temp := AnsiReplaceText(temp, '#CONN_STRING#', '');
          self.connString := temp;
        end

      //Lendo o número de dias para varredura
      else if (AnsiContainsText(arqConfig[cont], '#NUM_DIAS#') = True) then
        begin
          temp := arqConfig[cont];
          temp := AnsiReplaceText(temp, '#NUM_DIAS#', '');
          func := Funcoes.Create;
          if (func.IsInteger(temp) = True) then
            self.numDias := StrToInt(temp);
          func.Destroy;
        end

      //Lendo o endereço da fila
      else if (AnsiContainsText(arqConfig[cont], '#END_FILA#') = True) then
        begin
          temp := arqConfig[cont];
          temp := AnsiReplaceText(temp, '#END_FILA#', '');
          self.endFila := temp;
        end

      //Lendo o diretório do arquivo de erros
      else if (AnsiContainsText(arqConfig[cont], '#DIR_ERRO#') = True) then
        begin
          temp := arqConfig[cont];
          temp := AnsiReplaceText(temp, '#DIR_ERRO#', '');
          self.DiretorioArqErro := temp;
        end
      else
        begin
          Writeln('');
          Writeln('-- ERRO: Existem informacoes erradas no arquivo de configuracao.');
          retorno := false;
        end;
  except
    on e:exception do
      begin
        Writeln('');
        Writeln('-- ERRO: Ocorreu um erro quando o sistema tentava ler o arquivo de configuracoes.');
        Writeln('-- MSG:  ' + e.Message);
        retorno := false;
        Halt(1);
      end;
  end;

  result := retorno;
end;
A Variável de Ambiente contém os seguintes dados:
#CONN_STRING#Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=BANCO_DE_DADOS;Data Source=SERVIDOR;Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096;Workstation ID=USUARIO;Use Encryption for Data=False;Tag with column collation when possible=False
#NUM_DIAS#3
#END_FILA#cotovia\private$\logtws
#DIR_ERRO#C:\Temp\JOB_Erro.txt

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0
Para testá-la, fiz uma cópia da mesma para um Servidor de Teste, e automaticamente eu deveria alterar a aplicação para se conectar a ele.

A conexão com o Banco é feita na varíavel de ambiente, mas como eu troquei a aplicação de Servidor, eu não a encontro! Desta forma, eu não consigo alterar a conexão e não tenho como testar.

Gostaria de saber como eu faço para criar uma nova e fazer a chamada a ela, ou como descobrir onde está localizada a existente...

Acho que neste caso você apenas precisa definí-la. Assim, seria mais um dúvida associada a configuração do SO do que de programação.

Mas, vamos lá:

- na área de trabalho, localize o ícone Meu Computador, clique com o botão direito do mouse e selecione Propriedades;

- na tela de propriedades do sistema, acesse a guia Avançado;

- na parte inferior da guia, deve haver um botão com o caption Variáveis de ambiente, click nele;

- bom, agora você tem duas opções: definir a variável para o usuário (group "Variáveis de usuário para ...") atual ou para todos (group "Variáveis do sistema"). (para esta última, você terá que ter direitos de administrador)

Quanto a este comentário:

A Variável de Ambiente contém os seguintes dados:

#CONN_STRING#Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=BANCO_DE_DADOS;Data Source=SERVIDOR;Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096;Workstation ID=USUARIO;Use Encryption for Data=False;Tag with column collation when possible=False
#NUM_DIAS#3
#END_FILA#cotovia\private$\logtws
#DIR_ERRO#C:\Temp\JOB_Erro.txt

se você observar seu código, a variável de ambiente chama-se Variavel_Ambiente_JOB, e pelo que é feito com o valor obtido dela, na verdade ela contém apenas o nome de um arquivo (texto) de configuração, onde nele se encontram as informações citadas:

- Esta linha lê em temp o conteúdo da variável Variavel_Ambiente_JOB:

temp := GetEnvironmentVariable('Variavel_Ambiente_JOB');

- Sendo arqConfig do tipo TStringList, esta linha faz a leitura de um arquivo cujo nome está em temp

arqConfig.LoadFromFile(temp);

Então seu problema, seria definir a variável de ambiente no servidor de teste para que você consiga prosseguir com o desenvolvimento, e descobrir qual e onde está o arquivo apontado pela variável de ambiente no servidor "titular", já que você precisará dela também (eu imagino)

Abraços

Link para o comentário
Compartilhar em outros sites

  • 0

Micheus,

Obrigado mesmo pela informação. Ela já me deu uma luz!

O que eu fiz, então:

* Criei um arquivo .txt chamado "teste"

* Fui em variáveis do sistema, criei uma variável de nome "teste", que aponta para o diretório onde eu inseri o arquivo teste.txt.

* Alterei as referências do código, referente a "'Variavel_Ambiente_JOB'" e substituí por teste.

E funcionou!!!!!!

Esta questão está resolvida! Caso haja outras subseqüentes, voltarei outra vez!

Abc e fica com Deus!

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,7k
×
×
  • Criar Novo...