Customização - Controle de Configurações Locais

Pessoal,

Preciso criar uma funcionalidade para salvar configurações/ini em um arquivo local dentro do servidor do Protheus.

A necessidade desse arquivo fora do banco, é que vou consultar configurações antes mesmo de abrir a conexão com RpcSetEnv e etc.

Eu criei uma estrutura para utilizar um arquivo de texto, chamado parametros.ini onde eu utilizo a função FwFileReader para popular e consultar ele quando necessário.
Estou usando os metodos de Open, FullRead e Close.

O problema, é que constantemente esse arquivo físico é “corrompido”, porque a função não consegue abrir por alguma razão e ao salvar a atualização fica em branco.

Qual seria uma forma mais segura e correta de obter e salvar dados para essa necessidade? Estou evitando ter que criar uma outra mini database dentro do servidor apenas para isso.

Boa tarde,

Quando voce faz o uso do FWFileReader, pode confirmar que houve abertura do arquivo antes de aplicar os métodos?
E caso faça a abertura, ele fica disponível para modificação?
Consegue validar se essas operações ocorrem sem perder conexão com o arquivo?

Olá,

Ao tentar abrir um arquivo que está em uso, você pode ter problemas, devido ao acesso exclusivo, você até pode abrir um arquivo em uso, porém de forma compartilhada, o que lhe impede de escrever no mesmo, portanto utilizar de arquivos, pode ser complicado.

Existem algumas formas de tentar tratar os problemas:

  • Verificações: Utilizar as funções de manipulação de arquivo, validar o handle gerado etc, podem evitar alguns problemas, mas lembre-se, é um arquivo, se suas threads tentarem escrever ao mesmo tempo, vai dar problema.
  • Semáforo: Crie um semáforo para identificar que o arquivo está em alteração, não precisa ser nada complexo, um simples LockByName já resolveria, assim quando outra thread tentar alterar, ela será impedida devido ao LockByName.
  • Utilizar funções do binário: O binário já possui funções específicas para trabalhar com INI, algumas delas, possuem parâmetros para informar o arquivo e podem auxiliar a evitar os problemas de corromper o arquivo, visto que são as funções utilizadas no dia a dia do próprio Protheus para ler e alterar o appserver.ini, dê uma olhada nelas: Manipulação do arquivo de configuração *.INI - TOTVSTEC