Modelo de Tarefa
Referenciado por: DLL PAFECF | Dicas Técnicas |
Esse artigo reúne conhecimentos relacionados a criação e manutenção de DLLs da Totali.
Tutoriais
Criar novo método
1. Criar o método na unit onde estão os demais métodos.
2. Incluir nome da função no exports.
3. Atualizar versão ou release da DLL.
4. Atualizar aplicativo demo.
5. Atualizar artigo no wiki.
Padrões
Métodos e Parâmetros
O método devem ter a diretiva stdcall.
Os tipos das variáveis de parâmetros devem ser Integer ou PAnsiChar, pois são os dois únicos tipos que funcionam com o CheckOut.
Exemplo:
Function GeraArquivoCancelamentoNfe(pServidor, pDataBase, pServerType, pUserName, pPassword, pCodfilEmitente, pSerext, pNumnot, pDataEmissao, pJust: PAnsiChar): PAnsiChar; stdcall;
No Delphi XE o retorno por variável de parâmetro do tipo PAnsiChar deve ter ser implementado conforme exemplo:
procedure Versao(var pVersao: PAnsiChar); stdcall; Var cVersao: String; {$IFDEF VERSAO_DEMO_DELPHI}aVersao: PAnsiChar;{$ENDIF} begin TotaliLogRegistra('Versao - Início'); cVersao := VERSAO_DLL; {$IFDEF VERSAO_DEMO_DELPHI} //Cópia Valor para Tipo PAnsiChar aVersao := AnsiStrAlloc(Length(cVersao)+1); System.AnsiStrings.StrPCopy(aVersao , cVersao ); //Cópia Valor para Variável de Retorno Move(aVersao, pVersao, Length(aVersao)+1); {$ELSE} //Cópia Valor para Variável de Retorno if cVersao <> * then Move(Pointer(cVersao)^, pVersao, Length(cVersao)+1);* {$ENDIF} TotaliLogRegistra('Versao - Fim');
end;
O motivo é a forma que o checkout controla a variáveis passadas por parâmetros que é diferente de aplicativos Delphi.
Os métodos precisam estar declarados como exportados para permitir acesso externo.
Exemplo:
exports GeraArquivoCancelamentoNfe, Versao;
Versionamento da DLL
Diferente do Commerce, que possui seus fontes separados por versão e release, as DLLs são controladas apenas pela versão.
Porém, entre uma versão e outra, algumas funções da DLL podem sofrer mudanças. O sistema que chama a DLL pode precisar validar se a DLL possui determinada mudança, e para isso ele usa a release.
Bem como, em alguns casos, precisamos olhar para DLL e conseguir de alguma forma ter certeza de que se trata de uma determinada DLL.
A versão da DLL deve manter sempre o padrão, iniciando em 1.00:
V.RR <versão com 2 dígitos>.<release com 2 dígitos>
Exemplos:
- 1.00
- 1.01
- 1.05
- 1.15
A versão deve ser controlado em um único lugar no fonte, que deve ser na propriedade FileVersion do projeto.
Utilize a função FileVersion da unit TTUFuncoesDelphiIDE.
TFuncoesDelphiIDE.GetFileVersion('TotaliECFDLL.dll', fvDLLTotali);
Alterar release da DLL no projeto:
Project >>> Options >>> Version Info >>> FileVersion
Delphi XE: atualizar em todas as configurações de compilação.
Aplicativo de Testes
Por padrão, as DLLs da Totali possuem um aplicativo demo para auxiliar nos testes.
Se a DLL possuir o demo, como é o caso da PAFECF.dll, é necessário mantê-lo sempre atualizado.
Artigos de DLL
Se a DLL está documentada no wiki, como é o caso da PAFECF.dll, é necessário manter sua documentação sempre atualizada.
Artigos por DLLs:
| DLL | Artigo |
|---|---|
| PAFECF.dll | DLL_PAFECF |
Ao criarmos uma nova versão de um artefato documentado, devemos prosseguir da seguinte forma em relação à sua documentação:
- Tratar o artigo como sendo sempre da última versão.
- Relacionar na seção de alterações as novidades daquela versão. Exemplo: DLL_PAFECF.