Jump to content
Fórum Script Brasil
  • 0

[resolvido] Varíavel De Ambiente


Guinho.TI
 Share

Question

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 to comment
Share on other sites

2 answers to this question

Recommended Posts

  • 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 to comment
Share on other 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 to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share



  • Forum Statistics

    • Total Topics
      150.1k
    • Total Posts
      647.1k
×
×
  • Create New...