ActiveDelphi - Índice do Fórum ActiveDelphi
.: O site do programador Delphi! :.
 
 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 

Função COPY POS

 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
wiihbelo
Novato
Novato


Registrado: Sábado, 28 de Janeiro de 2012
Mensagens: 50

MensagemEnviada: Seg Dez 28, 2015 3:39 pm    Assunto: Função COPY POS Responder com Citação

Pessoal estou tentando compilar um fonte de NFe de teste do ACBR e nao esta dando um erro na função de copy a algo que tenho que declarar na uses, todos topicos que olhei a logica esta correta segue a função abaixo;

function ReplaceStr( Fonte, De, Para:AnsiString ):AnsiString;
begin
Result:=fonte;
while pos(de,result) <> 0 do
Result := Copy(Result,1, pos(de,result)-1 )+Para+copy(result,pos(de,result)+length(de),length(result) );
end;


[Error] Unit1.pas(573): Missing operator or semicolon
[Error] Unit1.pas(573): Incompatible types: 'String' and 'inflate_codes_mode'
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
strak2012
Colaborador
Colaborador


Registrado: Segunda-Feira, 13 de Janeiro de 2014
Mensagens: 1518
Localização: Maceió - AL

MensagemEnviada: Seg Dez 28, 2015 3:58 pm    Assunto: Re: Função COPY POS Responder com Citação

wiihbelo escreveu:
Pessoal estou tentando compilar um fonte de NFe de teste do ACBR e nao esta dando um erro na função de copy a algo que tenho que declarar na uses, todos topicos que olhei a logica esta correta segue a função abaixo;

function ReplaceStr( Fonte, De, Para:AnsiString ):AnsiString;
begin
Result:=fonte;
while pos(de,result) <> 0 do
Result := Copy(Result,1, pos(de,result)-1 )+Para+copy(result,pos(de,result)+length(de),length(result) );
end;


[Error] Unit1.pas(573): Missing operator or semicolon
[Error] Unit1.pas(573): Incompatible types: 'String' and 'inflate_codes_mode'



tente não usar o proprio result nos copy

Tente algo do tipo:
Código:
function ReplaceStr( Fonte, De, Para:AnsiString ):AnsiString;
begin
while pos(de,fonte) <> 0 do
Result := Copy(fonte,1, pos(de,fonte)-1 )+Para+copy(fonte,pos(de,fonte)+length(de),length(fonte));
end; 

_________________
Tudo podemos quando tudo sabemos!
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail MSN Messenger
wiihbelo
Novato
Novato


Registrado: Sábado, 28 de Janeiro de 2012
Mensagens: 50

MensagemEnviada: Seg Dez 28, 2015 5:09 pm    Assunto: Responder com Citação

Cara mesmo usando outra sintaxe não esta aceitando ele retorna o mesmo erro parando o cursor em
Result := Copy(fonte,1, pos(de,fonte)-1 )+Para+copy(fonte,pos(de,fonte)+length(de),length(fonte));
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
strak2012
Colaborador
Colaborador


Registrado: Segunda-Feira, 13 de Janeiro de 2014
Mensagens: 1518
Localização: Maceió - AL

MensagemEnviada: Seg Dez 28, 2015 6:23 pm    Assunto: Responder com Citação

wiihbelo escreveu:
Cara mesmo usando outra sintaxe não esta aceitando ele retorna o mesmo erro parando o cursor em
Result := Copy(fonte,1, pos(de,fonte)-1 )+Para+copy(fonte,pos(de,fonte)+length(de),length(fonte));



remova o
while pos(de,fonte) <> 0 do

Uma vez que fonte não vai ser alterado e que de pode estar em fonte logo isso causaria um loop infinito
_________________
Tudo podemos quando tudo sabemos!
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail MSN Messenger
strak2012
Colaborador
Colaborador


Registrado: Segunda-Feira, 13 de Janeiro de 2014
Mensagens: 1518
Localização: Maceió - AL

MensagemEnviada: Seg Dez 28, 2015 6:29 pm    Assunto: Responder com Citação

tente usar desta forma


Código:
function ReplaceStr( Fonte, De, Para:AnsiString ):AnsiString;
begin
Result := ansistring(StringReplace(Fonte, de, para,[ rfReplaceAll {, rfIgnoreCase} ]));
end;

_________________
Tudo podemos quando tudo sabemos!
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail MSN Messenger
wiihbelo
Novato
Novato


Registrado: Sábado, 28 de Janeiro de 2012
Mensagens: 50

MensagemEnviada: Seg Dez 28, 2015 7:36 pm    Assunto: Responder com Citação

strak2012 escreveu:
tente usar desta forma


Código:
function ReplaceStr( Fonte, De, Para:AnsiString ):AnsiString;
begin
Result := ansistring(StringReplace(Fonte, de, para,[ rfReplaceAll {, rfIgnoreCase} ]));
end;


Essa função funcionou porem as linhas onde tem o COPY nao funciona exemplo

CNPJ := copy(Chave,7,14);

para copiar da 7 a 14 ..
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi Todos os horários são GMT - 3 Horas
Página 1 de 1

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB