terça-feira, 2 de outubro de 2012

Trabalhando com arquivos .ini no Delphi



Esta vídeo aula tem como objetivo ensinar como se trabalhar como arquivos de inicialização (.ini) utilizando como ferramenta de desenvolvimento o Delphi.

Segue os código do evento OnShow do form:
procedure TForm1.FormShow(Sender: TObject);
var
  meuini: TIniFile;
begin
  if FileExists('C:\Users\AnderJoy\Desktop\Ini\conf.ini') then
  begin
    meuini := TIniFile.Create('C:\Users\AnderJoy\Desktop\Ini\conf.ini');

    edtNome.Text := meuini.ReadString('dados_pessoais', 'nome', '');
    edtEmail.Text := meuini.ReadString('dados_pessoais', 'email', '');
    rgItens.ItemIndex := meuini.ReadInteger('itens', 'item', -1);
    chkPermite.Checked := meuini.ReadBool('nova', 'permite', False);

    meuini.Free;
  end;
end;
Segue o código do evento OnClose do form:
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
var
  meuini: TIniFile;
begin
  if not DirectoryExists('C:\Users\AnderJoy\Desktop\Ini\') then
  begin
    if not CreateDir('C:\Users\AnderJoy\Desktop\Ini\') then
    begin
      Application.MessageBox('Não foi possivel criar o diretorio.', 'DCG',
        MB_OK + MB_ICONSTOP);
      Exit;
    end;
  end;

  meuini := TIniFile.Create('C:\Users\AnderJoy\Desktop\Ini\conf.ini');

  meuini.WriteString('dados_pessoais', 'nome', edtNome.Text);
  meuini.WriteString('dados_pessoais', 'email', edtEmail.Text);
  meuini.WriteInteger('itens', 'item', rgItens.ItemIndex);
  meuini.WriteBool('nova', 'permite', chkPermite.Checked);

  meuini.Free;
end;
Importante: Não se esqueçam de adicionar a biblioteca IniFiles no uses do form. Qualquer dúvida é só postar.

6 comentários:

  1. Anderson, SOCORRO

    sabe como eu leio um arquivo ini quando inicio uma aplicacao no android ? da mesma forma que esta aplicacao feita em delphi, só que no android

    Obrigado.

    ResponderExcluir
    Respostas
    1. Exatamente da mesma forma... Muda apenas a onde vc vai gravar o arquivo.

      Excluir
    2. Este comentário foi removido pelo autor.

      Excluir
    3. exatamente, só que eu ja tentei de varios caminhos para tentar ler e gravar ele e nao consigo :(

      //ler
      Ini := TPath.Combine(TPath.GetDocumentsPath, 'meuarquivoini.ini');

      //gravar
      Ini := TIniFile.Create(GetHomePath + PathDelim + 'meuarquivoini.ini');

      essas duas sao as forma que estou no momento e nao estao dando certo, mais ja tentei varias agora que nao lembro de cabeca :(

      Excluir
  2. Este comentário foi removido pelo autor.

    ResponderExcluir
  3. Segue abaixo o código para Android. Testei e funcionou. Só não testei este código para iOS. Fica aí para quem quiser testar para iOS também.

    uses
    IniFiles;

    procedure TForm1.FormCreate(Sender: TObject);
    Var
    loIniFIle : TInifile;
    begin
    loIniFIle := TInifile.Create(GetHomePath + PathDelim + 'ex.ini');
    ListBoxItem4.Text := loIniFile.ReadString('ex','teste1','Teste2');
    label1.Text := loIniFile.ReadString('ex','teste2','Teste');
    loIniFile.Free;
    end;

    procedure TForm1.SpeedButton1Click(Sender: TObject);
    Var
    loIniFIle : TInifile;
    begin
    if ComboBox1.ItemIndex = 0 then
    Begin
    label1.Text := 'Alfabeto';
    ListBoxItem4.Text := 'Almanaque';
    loIniFIle := TInifile.Create(GetHomePath + PathDelim + 'ex.ini');
    loIniFile.WriteString('ex','teste1',ListBoxItem4.Text);
    loIniFile.WriteString('ex','teste2',label1.Text);
    loIniFile.Free;
    end;

    if ComboBox1.ItemIndex = 1 then
    Begin
    label1.Text := 'Coracao';
    ListBoxItem4.Text := 'Cobertor';
    loIniFIle := TInifile.Create(GetHomePath + PathDelim + 'ex.ini');
    loIniFile.WriteString('ex','teste1',ListBoxItem4.Text);
    loIniFile.WriteString('ex','teste2',label1.Text);
    loIniFile.Free;
    End;
    end;

    ResponderExcluir