Ir para conteúdo
  • Cadastre-se

dev botao
  • Este tópico foi criado há 3210 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

As funcoes abaixo, nao estariam com  a assinatura errada ?
 
PADL = Adiciona string no inicio, left  -esquerda
PADR = adiciona string no final, right - direita
 
 
{-----------------------------------------------------------------------------
  Completa <AString> com <Caracter> a direita, até o tamanho <nLen>, Alinhando
  a <AString> a Esquerda. Se <AString> for maior que <nLen>, ela será truncada
 ---------------------------------------------------------------------------- }
function padL(const AString : AnsiString; const nLen : Integer;
   const Caracter : AnsiChar) : AnsiString ;
var
  Tam: Integer;
begin
  Tam := Length(AString);
  if Tam < nLen then
    Result := AString + StringOfChar(Caracter, (nLen - Tam))
  else
    Result := copy(AString,1,nLen) ;
end ;
 
{-----------------------------------------------------------------------------
  Completa <AString> com <Caracter> a esquerda, até o tamanho <nLen>, Alinhando
  a <AString> a Direita. Se <AString> for maior que <nLen>, ela será truncada
 ---------------------------------------------------------------------------- }
function padR(const AString : AnsiString; const nLen : Integer;
   const Caracter : AnsiChar) : AnsiString ;
var
  Tam: Integer;
begin
  Tam := Length(AString);
  if Tam < nLen then
    Result := StringOfChar(Caracter, (nLen - Tam)) + AString
  else
    Result := copy(AString,1,nLen) ;
end ;
 
Link para o comentário
Compartilhar em outros sites

  • Consultores

Programador da depressão: "O compilador sempre ignora meus comentários... :("

 

Alguma sugestão acg?

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
Link para o comentário
Compartilhar em outros sites

  • Consultores

Ah, agora que eu entendi...

 

   O problema é que, ao inverter essas duas letrinhas, teríamos que fazer uma busca por todo o código dos componentes para alterar também. Visto que o funcionamento atual é o esperado, devem estar usando a função incorreta. :(

   Infelizmente eu não vou ter tempo pra fazer isso por agora... Se alguém se habilitar.

 

   Para quem não entendeu, veja uma implementação ou outra implementação com exemplo.

  • Curtir 1

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
Link para o comentário
Compartilhar em outros sites

  • Moderadores

Com certeza

Estive lendo o tópico e me recordando de alguns lugares que uso no meu sistema as funções e terei que mudar ou somente quando perceber o problema!

Consultor SAC ACBr Juliomar Marchetti
 

Projeto ACBr

skype: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br
MVP_NewLogo_100x100_Black-02.png
 

 

Link para o comentário
Compartilhar em outros sites

Estive pensando em mudar para a implementacao em portugues:
 Suponho que PadD = adciona caracteres a direita
 e PadE = adiiciona caracteres a esqueda, funcoes essas na unit ACBrDFeUtil, porém, ao ler a funcao, acredito que ela esteja invertida também: veja:
 
// Penso em um suposto caracter a direita da string... ex: string entrada: 2: len=6  saída =>:  200000
class function DFeUtil.PadD(const AString: string; const nLen: Integer;
  const Caracter: Char): String;
begin
  Result := copy(AString,1,nLen);
  Result := StringOfChar(Caracter, (nLen - Length(Result))) + Result;
end;
 
// Penso em um suposto caracter a esquerda da string... ex: string entrada: 1: len = 6  saída =>:  000001
class function DFeUtil.PadE(const AString: string; const nLen: Integer;
  const Caracter: Char): String;
begin
  Result := copy(AString, 1, nLen);
  Result := Result + StringOfChar(Caracter, (nLen - Length(Result)));
end;
 
Como eu poderia ajudar arrumar isso? Se é que pode ser arrumado.
Link para o comentário
Compartilhar em outros sites

ok.

Lembrando apenas para os usuarios que tiverem a mesma funcao em seus sistemas, vulgo, clippeiros, que criaram essa função, que se começar dar problema em string..  apos incluir as units do acbr na uses, deve-se colocar o nome da sua unit propria no codigo fonte, ou isolar as chamadas ao acbr dentro de uma unit que nao seja global.

 

Passei por esse problema aqui, em remessa bancária, não é o pacote acbr boleto usado, mas outro, que por sua vez usa as funcoes.

Assunto encerrado.

Link para o comentário
Compartilhar em outros sites

  • Consultores

  O modo de arrumar seria renomear as funções de acordo com o que elas fazem e depois buscar em todo o código de todos os componentes, exemplos e projetos do ACBr o uso destas funções para alterar para a chamada correta.

 

  É por isso que é um refactoring traumático. Daria muito trabalho e pode ser suscetível de erros se não o fizer com cautela.

 

  De qualquer forma vou deixar aqui a ideia para se caso alguém algum dia quiser fazê-lo.

 

1) Renomeie a função padL para um nome que não exista, exemplo: xxpadR;

2) Compile todos os componentes, projetos e exemplos;

3) A cada erro que encontrar dizendo que a função padL não foi encontrada, mude para xxpadR;

4) Renomeie a função padR para um nome que não exista, exemplo: xxpadL;

5) Compile todos os componentes, projetos e exemplos;

6) A cada erro que encontrar dizendo que a função padR não foi encontrada, mude para xxpadL;

Agora você tem o código chamando as funções corretamente e falta apenas voltar para o nome correto;

7) Renomeie a função xxpadR para padR e compile todos os componentes, exemplos e projetos para acertar novamente as chamadas;

8) Renomeie a função xxpadL para padL e compile todos os componentes, exemplos e projetos para acertar novamente as chamadas;

  • Curtir 1

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
Link para o comentário
Compartilhar em outros sites

  • Moderadores

Elton Barbosa:

Seria uma solução plausível!

Como posso ajudar nisso ?

Respondendo pelo Elton, é fazer o que ele sugeriu no post acima!

Atualize seu svn deixe ele compatível totalmente com o ACBr sem nenhum ícone dos arquivos diferente de verde

e comece a alteração, lembrando tem que testar todos os componentes que fazem uso!

  • Curtir 1
Consultor SAC ACBr Juliomar Marchetti
 

Projeto ACBr

skype: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br
MVP_NewLogo_100x100_Black-02.png
 

 

Link para o comentário
Compartilhar em outros sites

  • Consultores

Respondendo pelo Elton, é fazer o que ele sugeriu no post acima!

Atualize seu svn deixe ele compatível totalmente com o ACBr sem nenhum ícone dos arquivos diferente de verde

e comece a alteração, lembrando tem que testar todos os componentes que fazem uso!

Não pode esquecer de todos Exemplos e projetos. Como não se sabe exatamente quais fazem uso, seriam todos mesmo. :(

  • Curtir 1

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
Link para o comentário
Compartilhar em outros sites

  • Moderadores

Juliomar, e depois de alterado, mando todo pacote para voces?

Dai vao mudar linha a linha ?

Após alterar anexa os arquivos alterados aqui que será feito um merge!

lembre de não usar formatador de código pois senão inviabiliza esse merge.

Consultor SAC ACBr Juliomar Marchetti
 

Projeto ACBr

skype: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br
MVP_NewLogo_100x100_Black-02.png
 

 

Link para o comentário
Compartilhar em outros sites

  • Moderadores

Talvez uma saída menos dolorosa seja fazer o que o Elton disse usando um software como o WindowsGreep, nele eu posso procurar uma string e trocar por outra automaticamente em todos os arquivos de um diretório.

Com ele seria possível seguir o passo-a-passo e fazer a troca, o problema a meu ver é que essa troca, mesmo usando uma ferramenta não é menos dolorosa.

Equipe ACBr

Régys Borges da Silveira

http://www.regys.com.br

certificacao delphicertificacao delphi
Link para o comentário
Compartilhar em outros sites

  • Consultores

Talvez uma saída menos dolorosa seja fazer o que o Elton disse usando um software como o WindowsGreep, nele eu posso procurar uma string e trocar por outra automaticamente em todos os arquivos de um diretório.

Com ele seria possível seguir o passo-a-passo e fazer a troca, o problema a meu ver é que essa troca, mesmo usando uma ferramenta não é menos dolorosa.

 

  Pessoalmente, eu tenho receio do uso desse tipo de ferramenta num escopo tão grande. Talvez não seja o nosso caso específico, mas receio a ferramenta se confundir com as strings ou uma possível falta de padronização no código.

  Contudo, as versões mais novas do Delphi tem o Refactoring->Rename Method que funciona muito bem dentro de um projeto. Acho mais confiável do que uma ferramenta de mudança de string.

 

Mas, na minha opinião, o mais importante é a compilação após a mudança em cada projeto. Isso é o que daria segurança das alterações estarem sendo feitas sem problemas.

  • Curtir 2

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
Link para o comentário
Compartilhar em outros sites

  • Moderadores

Então Elton, é por isso que acho que de qualquer forma vai ser doloroso, o ACBr hoje tem diversas units, fora que alguns usuários podem estar utilizando os métodos, eu sou um deles, uso extensivamente o ACBrUtil e outros.

Não vejo forma simples de fazer essa mudança, nem uma forma totalmente confiável também.

 

Eu uso o refactoring do delphi a um bom tempo, realmente ele funciona bem no escopo de um projeto, não sei no caso do ACBr que tem vários pacotes, posso tentar, quem sabe criando um grande projeto e adicionando os pacotes a ele e tentando fazer o refactoring, mas ainda vai existir o risco de algo ficar de fora no meu ver.

Equipe ACBr

Régys Borges da Silveira

http://www.regys.com.br

certificacao delphicertificacao delphi
Link para o comentário
Compartilhar em outros sites

  • Fundadores

Acho que o que poderíamos fazer, é adicionar uma Observação no cabeçalho das funções PadL e PadR, informando que as mesmas tem o funcionamento inverso do esperado das mesmas funções existentes em linguagens do padrão xBase (Clipper, Harbour, xHarbour, etc)...

Mas a descrição do cabeçalho atual parece estar concisa com o que a função faz..

  • Curtir 2
Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Link para o comentário
Compartilhar em outros sites

  • Consultores

Acho que o que poderíamos fazer, é adicionar uma Observação no cabeçalho das funções PadL e PadR, informando que as mesmas tem o funcionamento inverso do esperado das mesmas funções existentes em linguagens do padrão xBase (Clipper, Harbour, xHarbour, etc)...

Mas a descrição do cabeçalho atual parece estar concisa com o que a função faz..

Acho que é uma saída possível.

 

Nota: para esclarecer, não só linguagens xBase. Linguagens C, .net, SQL e pascal também.

 

Só continuaria tendo problema quando alguém que já faz uso de uma mesma função no sistema adicionar na cláusula uses a unit ACBrUtil. Talvez faça isso para acessar alguma outra coisa que não tem nada a ver com essas funções. Lógico, isso pode também ser resolvido com a chamada referenciando a unit correta.

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
Link para o comentário
Compartilhar em outros sites

  • 1 ano depois...
  • Consultores

No trunk2 as funções foram corrigidas pelo Daniel. Valeu Daniel. :)

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
Link para o comentário
Compartilhar em outros sites

  • Este tópico foi criado há 3210 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.

The popup will be closed in 10 segundos...