Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

BJ_

:: Arquivo INI ::

Recommended Posts

Olá!Estou com problemas com relação a arquivos INI.Bom eu consigo cria-los porém não consigo fazer a leitura dele.Estou fazendo da seguinte forma:Criei um GUI para um programa de DOS.Quando o usuário vai localizar pela primeira vez o programa do DOS, o GUI cria um INI no mesmo local onde está o programa localizado.O problema é que ao fechar o programa e abri-lo novamente eu não consigo de maneira alguma achar automaticamente o INI, ou seja, o usuário tem que localizar novamente o programa do DOS e o arquivo INI criado anteriormente não serve para nada!Estou fazendo assim para evitar problemas futuros em especificar um caminho único, como c:\windows\config.ini.Como faço para carregar esse arquivo INI criado, ao ser executado o programa pela primeira vez?Obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Colega,

 

Não entendi completamente o seu problema. Os arquivos de inicialização (INI) quando não possuem um diretório especificados são craido na raiz do Windows, normalmente C:\Windows ou C:\WinNT conforme a versão.

A leitura pode ser realizada no OnCreate para "direcionar" sua aplicação.

 

Veja um exemplo de um pequeno aplicativo de backup:

 

procedure TForm1.FormCreate(Sender: TObject);var ArquivoINI: TIniFile;    Arquivo: TStringList;begin  ArquivoINI  := TIniFile.Create('BackupCD.INI'); // Origem dos dados  try    Destino                       := ArquivoINI.ReadString('PARAMETROS','Pasta destino', 'C:\');    Prefixo                       := ArquivoINI.ReadString('PARAMETROS','Prefixo','SGA');    Remover                       := ArquivoINI.ReadBool('PARAMETROS','Remover', True);    scn.Root                      := ArquivoINI.ReadString('PARAMETROS','Pasta origem', 'C:\');    RemoverArquivo                := ArquivoINI.ReadString('PARAMETROS','Remover arquivo','');    cbxNomeArquivo.Checked        := ArquivoINI.ReadBool('MONITORAR','Nome de arquivo',false);    cbxNomeDiretorio.Checked      := ArquivoINI.ReadBool('MONITORAR','Nome de diretorio',false);    cbxAtributo.Checked           := ArquivoINI.ReadBool('MONITORAR','Atributo',false);    cbxTamanho.Checked            := ArquivoINI.ReadBool('MONITORAR','Tamanho',false);    cbxEscrita.Checked            := ArquivoINI.ReadBool('MONITORAR','Escrita',false);    cbxSeguranca.Checked          := ArquivoINI.ReadBool('MONITORAR','Segurança',false);    meOrigem.Text                 := scn.Root;    meDestino.Text                := Destino;    mePrefixo.Text                := Prefixo;    cbxRemover.Checked            := Remover;    meRemoverArquivo.Text         := RemoverArquivo;  finally    ArquivoINI.Free;  end;  Arquivo := TStringList.Create;  if FileExists(scn.Root+'\BackupCD.LOG') then    Arquivo.LoadFromFile(scn.Root+'\BackupCD.LOG')  else  begin    Arquivo.Add('LOG DO SERVIÇO DE BACKUP');    Arquivo.Add('-----------------------------------------------------------------');    Arquivo.Add('DATA     HORA     DESTINO                                        ');    Arquivo.Add('======== ======== ===============================================');  end;  Arquivo.Add( DateToStr(Date)+' '+TimeToStr(Time) + ' ' + Destino);  Arquivo.SaveToFile(scn.Root+'\BackupCD.LOG');  Arquivo.Free;  end;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Voce pode vincular a localização do INI ao mesmo diretório do se EXE:

Var ArqIni : String;begin  { Definindo nome do arquivo INI como o mesmo nome do programa }  ArqIni := ChangeFileExt(Application.ExeName,'.ini') ;

Se você deseja outro nome, diferente do nome do EXE para o arquivo INI use: ExtractFilePath(Application.ExeName)+'SEUARQ.INI'

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado pela atenção de vcs!@DOPIIsso eu já estou fazendo. Obrigado!@AroldoEntão farei um teste. É que eu estava especificando no programa o caminho c:\windows e como você falou não há necessidade pois por padrão o arquivo INI já é criado nesta pasta. Isso ocorre indiferentimente da unidade?O meu problema surgiu quando um usuário não tinha o windows instalado no C:\ e sim no F:\, daí meu programa morreu pois ele procurava no C:\windows.Obrigado pela ajuda!Grande abraço!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.