trabalhando com arquivos ini no delphi

Upload: claudio-americo

Post on 31-Oct-2015

126 views

Category:

Documents


0 download

TRANSCRIPT

  • Trabalhando com arquivos INI no Delphi 2 de 8

    Danilo Rodrigues, [email protected]

    Introduo

    Os arquivos INI so arquivos de configurao, que podem ser facilmente vizualizados, modificados ou apagados.

    Antes de utilizarmos este tipo de arquivo com o Delphi iremos entender o funcionamento dele.

    Observe o exemplo abaixo:

    A seo deve estar sempre no comeo da linha e entre colchetes. Os nome de seo so case-sensitive ( ou seja, Seo diferente de seo). As sees podem conter varivaveis com nomes iguais.

    A variavel, assim como no delphi, pode conter valores do tipo texto (string), inteiros (integer), boleanos (bool), etc...

    Caso exista duas sees com o mesmo nome, ou duas variaveis com o mesmo nome dentro de uma mesma seo ento a ultima ocorrncia prevalece.

    Uma das desvantagens do arquivo INI que ele no muito seguro pois a pessoa pode modifica-lo facilmente com um editor de textos ( Exemplo: Bloco de Notas ).

    Delphi

    O Delphi tem uma classe chamada TiniFile que contm procedimentos e funes para trabalhar com arquivos INI. A classe TiniFile pode ser utilizada declarando-se a unit inifiles.pas na clausula uses.

    Para utilizar um arquivo ini, primeiro devemos definir uma variavel do tipo Tinifile. ( O codigo abaixo pode ser colocado em uma function ou em um procedure ( como no clique de um boto)).

    [seo1] variavel=valor ;comentario nome=arquivoini ;comentario

    [seo2] nome=outronome

    uses inifiles;

    var arquivo : Tinifile; //variavel do tipo Tinifile

  • Trabalhando com arquivos INI no Delphi 3 de 8

    Danilo Rodrigues, [email protected]

    No cdigo acima, caso o arquivo arquivoini.ini no exista ele ser criado. Neste caso, o arquivo ser criado/procurado na pasta Windows, mas se voc quiser voc pode definir um diretrio.

    Ou, para facilitar mais, colocar o arquivo INI no mesmo diretrio do executavel.

    Funes de Escrita

    As funes para escrever so simples, basta usar a variavel antes definida ( no nosso exemplo, a variavel arquivo) e aps ela colocar um ponto ( . ) e a funo desejada.

    Exemplo de funes:

    WriteString: Escreve uma variavel com valor string, exemplo abaixo:

    WriteInteger: Escreve uma variavel com valor integer, exemplo abaixo:

    WriteBool: Escreve uma variavel com valor boleano ( true ou false ), exemplo abaixo:

    Existem tambm outros formatos de variaveis que podem ser gravadas no arquivo INI ( Float, Time, Date, DateTime ).

    arquivo := Tinifile.Create('arquivoini.ini'); //Inicializa a variavel arquivo especificando o arquivo arquivoini.ini como o arquivo INI que vai ser utilizado.

    arquivo := Tinifile.Create('c:\arquivoini.ini');

    var dir : string; begin dir := extractfilepath(application.exename); arquivo := Tinifile.Create(dir + 'arquivoini.ini'); end;

    Arquivo.writeString('seo','variavel','valor');

    Arquivo.writeInteger('seo','variavel',123456); //Aonde 123456 o valor a ser gravado ( valor numrico)

    Arquivo.writeBool('seo','variavel',true); //Aonde true o valor a ser gravado ( valor boleano)

  • Trabalhando com arquivos INI no Delphi 4 de 8

    Danilo Rodrigues, [email protected]

    Funes de Leitura

    Assim como as funes de escrita, as funes de leitura so faceis de usar, e tem a utilidade de pegar um valor escrito em uma variavel do arquivo INI. Antes vamos declarar algumas variaveis que sero utilizadas para receber o valor lido do arquivo INI.

    ReadString: L uma variavel de valor string, caso voc use o ReadString para ler uma

    variavel que contenha um valor Integer, este valor sera retornado como um texto. Exemplo abaixo:

    ReadInteger: L uma variavel de valor integer. Exemplo abaixo:

    ReadBool: L uma variavel de valor bool ( true ou false). Exemplo abaixo:

    var rstr : string; //variavel que ser utilizada

    //para receber um valor string rint : Integer; //variavel que ser utilizada

    //para receber um valor integer rbool : bool; //variavel que ser utilizada

    //para receber um valor bool

    rstr := arquivo.readString('seo','variavel', 'valor padro'); //passa para variavel rstr o valor da variavel //variavel contida na seo seo. //Caso a variavel lida no exista ela retorna o valor //padro

    rint := arquivo.readString('seo','variavel', 54321); //passa para variavel rint o valor da variavel //variavel contida na seo seo. //Caso a variavel lida no exista ela retorna o valor //padro definido acima como 54321 ( voc pode definir o //valor que quiser)

    rbool := arquivo.readString('seo','variavel', false); //passa para variavel rint o valor da variavel //variavel contida na seo seo. //Caso a variavel lida no exista ela retorna o valor //padro definido acima como false ( voc pode definir //true ou o valor que quiser)

  • Trabalhando com arquivos INI no Delphi 5 de 8

    Danilo Rodrigues, [email protected]

    Outras funes Tambm existem outras funes que nos ajudam bastante a lidar com um

    arquivo INI. EraseSection Deleta uma seo inteira ( todas as suas variaveis )

    SectionExists Retorna True caso a seo exista e False caso ela no exista.

    Existem tambm outras funes que no foram faladas aqui.

    Exemplos

    Exemplo 1: Exemplo de contador de visitas( conta quantas vezes voc entro no

    programa). No formulrio coloque uma Label e nomeie ela como visitas.(fig1)

    arquivo.eraseSection('exemplo'); //deleta a seo exemplo

    If arquivo.SectionExists('exemplo') then showmessage('Existe'); //verifica a existencia da seo exemplo

  • Trabalhando com arquivos INI no Delphi 6 de 8

    Danilo Rodrigues, [email protected]

    A lgica a seguinte, quando a pessoa abrir o programa, o programa consultara no arquivo visitas.ini o nmero de visitas, se a pessoa visitou j 1 vez, ento esta a 2 visita.

    Coloque o cdigo abaixo no onShow do formulrio. Obs.: No esquea de declarar a unit Inifiles na clausula Uses do formulrio.

    Compile o programa e veja o resultado:

    var arquivo : Tinifile; Nvisitas: integer; begin arquivo := Tinifile.Create('visitas.ini'); Nvisitas := arquivo.ReadInteger('exemplo1','visitas',0); //A variavel Nvisitas recebe o valor integer lido do arquivo ini //da variavel "visitas" contida na seo [exemplo1], sendo que o valor //padro definido ( o valor que passado para a variavel caso no seja //encontrada a variavel "visitas" na seo "exemplo1") 0

    //Como o arquivo guarda o nmero de vezes que a pessoa ja visitou o programa //O numero dessa visita seria, o numero de visitas +1; //abaixo o codigo! Nvisitas := Nvisitas +1; visitas.Caption := 'Esta a '+inttostr(nvisitas)+' vez que voc usa o programa';

    //agora vamos salvar a informao o n de visitas at agora arquivo.WriteInteger('exemplo1','visitas',Nvisitas); //guarda o numero contido na variavel NVisitas arquivo.Free; //Libera a variavel arquivo da memria!

  • Trabalhando com arquivos INI no Delphi 7 de 8

    Danilo Rodrigues, [email protected]

    Feche o programa e abra ele denovo ( mesmo que voc recompile ele, observe o contador de visitas continuara funcionando ).

    Agora vamos fazer um botao para limpar o nmero de visitas. Adicione um boto e mude o caption dele para Limpar o n de visitas.( Na figura abaixo eu mudei um pouco o layout para deixa-lo so com o espao nescessrio para o boto e o label)

    No evento OnClick deste boto, coloque o cdigo abaixo:

    Rode o programa e clique no boto. Agora feche e abra denovo! Pronto, agora apareceu que esta a primeira vez que voc entra. O arquivo visitas.ini foi criado no diretrio Windows ( pois no definimos nenhum diretrio )

    Fim do Exemplo.

    O cdigo de fonte deste exemplo pode ser encontrado no link abaixo: http://www.bestsharing.com/files/ms00171936/exemplo1.zip.html

    var arquivo : Tinifile; begin arquivo := Tinifile.Create('visitas.ini'); //inicializa a variavel arquivo com o arquivo visitas.ini arquivo.WriteInteger('exemplo1','visitas',0); //escreve 0 na variavel visitas dentro da seo exemplo1, //limpando assim o n de visitas arquivo.Free; //libera a variavel arquivo da memria end;

  • Trabalhando com arquivos INI no Delphi 8 de 8

    Danilo Rodrigues, [email protected]

    Exemplo 2: Exemplo de como salvar as posies top e left, e o tamanho width e height do

    formulrio. Este exemplo pode ser encontrado no link abaixo http://www.bestsharing.com/files/ms00171957/exemplo2.zip.html

    Notas finais

    Observao: Sempre que terminar de usar a variavel que tem acesso ao arquivo INI libere

    ela da memria. Exemplo abaixo:

    A classe TRegIniFile foi introduzida para um fcil acesso ao Registro do sistema sem ter que conhecer a estrutura do registro. TRegIniFile tem funcionalidade de acesso ao Registro igual a TIniFile tem aos arquivos .INI.

    Limitaes: A classe TIniFile usa a API do Windows que impe um limite de 64kb nos arquivos INI. Se voc precisar armazenar mais de 64kb de dados, voc precisar usar o TMemIniFile ao invs da TInifile, que no possui o limite de 64kb.

    Sobre

    Tutorial desenvolvido por Danilo Rodrigues. Este tutorial no pode ser comercializado de nenhuma forma, pois o seu

    contedo livre e de livre acesso a qualquer usurio. Se voc tiver alguma critica, duvida, comentario, problema com o tutorial ou

    com os exemplos, problema com links quebrados envie um e-mail para: [email protected]

    var arquivo : Tinifile; begin arquivo := Tinifile.Create('teste.ini'); //inicializa a variavel arquivo com o arquivo teste.ini arquivo.Free; //libera a variavel arquivo da memria end;