Eder Postado Janeiro 31, 2008 Denunciar Share Postado Janeiro 31, 2008 OlaTenho este conteudo em um edit:Marcos+Dias+Peixoto+da+Silvaeu gostaria de saber como faço um codigo que retira este sinal de mais(+) deixando assim:Marcos Dias Peixoto da SilvaGrato Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Micheus Postado Janeiro 31, 2008 Denunciar Share Postado Janeiro 31, 2008 Tenho este conteudo em um edit:Marcos+Dias+Peixoto+da+Silvaeu gostaria de saber como faço um codigo que retira este sinal de mais(+) deixando assim:Marcos Dias Peixoto da SilvaEder, você pode fazer uso da function StringReplace, que postei ainda outro dia para você neste postAbraços Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Eder Postado Janeiro 31, 2008 Autor Denunciar Share Postado Janeiro 31, 2008 Oba..Micheus.é esta aqui né:function StringReplace(S, OldPattern, NewPattern: string; Flags: TReplaceFlags): string; var Idx, Offset :Integer; S_Case, OldPattern_Case: string; begin if rfIgnoreCase in Flags then begin S_Case := UpperCase(S); OldPattern_Case := UpperCase(OldPattern); end else begin S_Case := S; OldPattern_Case := OldPattern; end; Idx := Pos(OldPattern_Case, S_Case); Offset := Idx; if Idx > 0 then repeat Delete(S, Offset, Length(OldPattern)); Insert(NewPattern, S, Offset); Delete(S_Case, 1, Idx); Idx := Pos(OldPattern_Case, S_Case); Offset := Offset +Length(NewPattern)+ Idx -1; until not(rfReplaceAll in Flags) or ((Idx = 0) and (rfReplaceAll in Flags)); Result := S; end;Porem não compreendi ela.....por isto não sei por onde começar.... :blush: Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Janeiro 31, 2008 Denunciar Share Postado Janeiro 31, 2008 (editado) Oi Eder... vai um mais simplesprocedure TForm1.Button1Click(Sender: TObject); var S: string; begin S := 'Marcos+Dias+Peixoto+da+Silva'; while Pos('+', S) > 0 do S[Pos('+', S)] := ' '; edit1.Text := s; end;abraço Editado Janeiro 31, 2008 por Jhonas Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Micheus Postado Janeiro 31, 2008 Denunciar Share Postado Janeiro 31, 2008 Porem não compreendi ela.....por isto não sei por onde começar.... :blush:É faltou um exemplo junto dela. Mas se você olhar uns 2 posts abaixo tem um exemplo de como você iria utilizá-la.Ela faz basicamente o mesmo que a do Delphi7 faz. Caso você use o Delphi7 ou superior, basta incluir a unit SysUtils - não precisa escrever o código.Delphi syntax:type TReplaceFlags = set of (rfReplaceAll, rfIgnoreCase);function StringReplace(const S, OldPattern, NewPattern: string; Flags: TReplaceFlags): string;Retorna a string modificadaS = Sua string de entrada a ser alteradaOldPattern = Padrão antigo, ou seja, o que você quer procurar para substituirNewPattern = Novo padrão, ou seja, o texto a substituir o antigoFlags = pode ser um ou a combinação das duas opções. - rfReplaceAll = substitui todas as ocorrências. Omitido, substitui apenas a primeira- rfIgnoreCase = ignora diferenciação entre maiúsculas e minúsculas. Omitido, faz a busca pelo texto exata.Pegando um gancho no exemplo do Jhonas, seu uso seria ssim:S := 'Marcos+Dias+Peixoto+da+Silva'; S := StringReplace(S, '+', ' ', [rfReplaceAll])vai um mais simplesÉ mais simples, mas serve especificamente para este caso. Também troca apenas caracter, não seqüência de texto.Acho sempre mais interessante usar algo abrangente, que possa ser utilizado em outros casos e flexível. E quando vier a migrar para Delphi7, basta remover a procedure de sua unit de utilidades - porque não mudará nada no código onde ela for utilizada.Fica a seu critério.Abraços Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Eder Postado Janeiro 31, 2008 Autor Denunciar Share Postado Janeiro 31, 2008 Resumindo: Dica do Jonas:procedure TForm1.Button2Click(Sender: TObject); var S: string; begin S := EditEndereco.text; while Pos('+', S) > 0 do S[Pos('+', S)] := ' '; EditEndereco.Text := S; end; R.: beleza.. Dica do Micheus: Função:function StringReplace(S, OldPattern, NewPattern: string; Flags: TReplaceFlags): string; var Idx, Offset :Integer; S_Case, OldPattern_Case: string; begin if rfIgnoreCase in Flags then begin S_Case := UpperCase(S); OldPattern_Case := UpperCase(OldPattern); end else begin S_Case := S; OldPattern_Case := OldPattern; end; Idx := Pos(OldPattern_Case, S_Case); Offset := Idx; if Idx > 0 then repeat Delete(S, Offset, Length(OldPattern)); Insert(NewPattern, S, Offset); Delete(S_Case, 1, Idx); Idx := Pos(OldPattern_Case, S_Case); Offset := Offset +Length(NewPattern)+ Idx -1; until not(rfReplaceAll in Flags) or ((Idx = 0) and (rfReplaceAll in Flags)); Result := S; end; (+)mais Codigo do botão: procedure TForm1.Button3Click(Sender: TObject); var S: string; begin S := EditEndereco.text; S := StringReplace(S, '+', ' ', [rfReplaceAll]); EditEndereco.text:=S; end;R.: beleza...tambémDicas testadas usando Delphi 4valeu..Pessoal testei as duas e realmente ambas funcionam muito bem.muito Obrigado a todosAbraço :) Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Eder
Ola
Tenho este conteudo em um edit:
eu gostaria de saber como faço um codigo que retira este sinal de mais(+) deixando assim:Grato
Link para o comentário
Compartilhar em outros sites
5 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.