|
Software Development Kit to the Delphi-Win32 and Free Pascal compilers |
| Home > Wiki > br/Arquivo de configuracao |
br/Arquivo de configuracaoenglish (en) | português (br) Um aplicativo PressObjects (POA, do inglês, PressObjects Application) pode ter um um arquivo de configuração que lhe fornece informações e configurações para seus serviços em tempo de execução. Este arquivo pode configurar as propriedades published dos serviços. Como um exemplo, para brokers de persistência, ele pode fornecer configurações como o caminho do banco de dados, nome de usuário e senha.
[edit] Nome do arquivoO nome de arquivo padrão é derivado do nome da aplicação Press, mudando apenas sua extensão para o valor da constante SPressConfigFileExt. Para usar um nome de arquivo diferente, mude o valor da propriedade PressApp.ConfigFileName na seção initialization de qualquer unit. [edit] Local do arquivoA aplicação Press verifica a existência do arquivo de configuração na mesma pasta do executável. [edit] Momento de leitura do arquivoO arquivo de configuração é carregado durante a inicialização do aplicativo Press, logo antes do aplicativo começar sua execução, mas após a seção initialization de todas as units. [edit] Inicialização das configurações do serviçoAs propriedades de configuração do serviço são atualizadas com os valores do arquivo de configuração, quando uma instância do serviço é requisitada pela primeira vez. [edit] Formato do arquivoO formato do arquivo de configuração é similar a um arquivo 'INI'. É dividido em seções, iniciadas por um cabeçalho circundado por colchetes []. Um cabeçalho é composto pelo nome do serviço e, opcionalmente, um sub-nome separado por ponto (.). Cada seção pode conter items, sendo cada item correspondente a uma propriedade published do serviço. Comentários podem ser incluídos e deve ser precedidos de '#' ou '//'. Qualquer entrada, após estes símbolos, numa linha é ignorada. Um exemplo para o aplicativo demo Phonebook.exe, a seguir: no arquivo "PhoneBook.cf" [OPFBroker] // Informa ao serviço OPFBroker para usar o broker IBX DefaultServiceName := 'IBX'; #DefaultServiceName := 'SQLdb'; [OPFBroker.SQLdb] // Estas configurações não são utilizadas Connector.Database.ConnectorType := 'firebird'; Connector.Database.DatabaseName := 'localhost:G:\Database\IBX\PO\Phonebook.fb'; Connector.Database.UserName := 'sysdba'; Connector.Database.Password := 'masterkey'; [OPFBroker.IBX] // Inclua as configurações necessárias ao broker IBX Connector.Database.DatabaseName := 'localhost:G:\Database\IBX\PO\Phonebook.gdb'; Connector.UserName := 'sysdba'; Connector.Password := 'masterkey'; [edit] Funções definidas pelo usuárioO usuário pode criar funções reconhecidas pelo parser do arquivo de configuração. Por exemplo, para descriptografar uma senha. [edit] Declaração
interface
uses
PressConfig;
type
TDecryptFnc = class(TPressConfigFunction)
protected
function GetValue: string; override;
end;
implementation
function TDecryptFnc.GetValue: string;
begin
// Params.Count tem o número de parâmetros
// Params[n] tem o parâmetro n (iniciado em zero) como string
// Preencha o valor da variável Result com o resultado da função
end;
initialization
TDecryptFnc.RegisterFunction('Decrypt');
Crie uma classe descendente de TPressConfigFunction (está na unit PressConfig), sobreponha (override) a função GetValue e registre a classe usando o método de classe RegisterFunction, então passe o nome da função como parâmetro para este método. [edit] Usando sua funçãodentro do arquivo de configuração Connector.Password := Decrypt(twofish, 'aabb'); [edit] ImplementaçãoO arquivo de configuração não faz parse dos argumentos. Então Params[0] tem a string 'twofish' e Params[1] tem a string 'aabb' entre aspas simples. A função PressUnquotedStr (na unit PressUtils) remove as aspas de valores string. O resultado também é string. Se a propriedade esperar um inteiro ou enumeração, traduza-a para uma representação em string:
|
Personal tools |