Trabalhando com arquivos INI no Protheus

Estes dias me perguntaram, como eu poderia trabalhar com arquivos ini, gerar um arquivo e usá-lo posteriomente.
A ideia de um arquivo ini, é trabalhar com seções, chaves e valores.
Qual é o conceito de um arquivo ini?
Arquivos INI são arquivos de texto simples com uma estrutura básica composta de “seções” e “propriedades”.
Seções
Chaves podem (mas não necessitam) ser agrupadas em seções nomeadas arbitrariamente. O nome da seção aparece em uma linha, entre colchetes ([ e ]). Todas as chaves após a declaração de seção são associadas com aquela seção. Não há um delimitador explícito de “final de seção”. Elas terminam na próxima declaração de seção ou no final do arquivo e não podem ser aninhadas.
1 2 3 |
[seção] a=a b=b |
Chaves (propriedades)
O elemento básico contido em um arquivo INI é a chave ou propriedade. Toda chave tem um nome e um valor, delimitado por um sinal de igual(=). O nome aparece à esquerda do sinal de igual.
1 |
chave=valor |
No Protheus, é simples de usar, podemos usar a função GetPvProfString() para ler o arquivo e buscar a seção, chaves e valores.
Sintaxe:
1 |
GetPvProfString( < cSecao >, < cChave >, < cPadrao >, < cNomeArqCfg >, [ uParam5 ], [ uParam6 ] ) |
Para saber mais da função acesse: https://tdn.totvs.com/display/tec/GetPvProfString
Na prática seria assim o arquivo
Meu arquivo ini tem uma seção chamada [modelo], possui varias chaves no exemplo temos a chave Arquivo, e este contem um valor, se eu fosse chamar ele no Protheus ficaria:
1 2 |
Local cArquivo := GetPvProfString("modelo", "arquivo", Space(255), "C:\arquivo.ini") //Caso não contenha conteudo, gravarei espaços na variavel cArquivo |
Fácil ler não é?
Agora quero criar o meu arquivo para ser usado. Para isso, usarei as funções FCreate(), FWrite() e FClose()
1 2 3 4 5 6 |
Local oModelo := FCreate("C:\ARQUIVO.INI",0) FWrite(oModelo, "[modelo]" + CRLF) FWrite(oModelo, "Arquivo = C:\MEUARQUIVO.CSV" + CRLF) FClose(oModelo) //Estou usando CRLF para quebrar de linha, assim deixando meu arquivo formatado corretamente |
Demonstrando em video o funcionamento da função GetPvProfString()
Você precisa fazer log in para comentar.