BJ_ 0 Denunciar post Postado Janeiro 3, 2005 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
Aroldo Zanela 0 Denunciar post Postado Janeiro 4, 2005 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
Dopi 0 Denunciar post Postado Janeiro 4, 2005 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
BJ_ 0 Denunciar post Postado Janeiro 4, 2005 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