Fórum DesFormatar String #194543
12/11/2003
0
Dede ja agradeço.
Lucas.
Lucas_rp
Curtir tópico
+ 0Posts
12/11/2003
Lucas Silva
´99\.999\.999\/9999\-99;1;_´... se for isso mesmo é só trocar a máscara p/ ´99\.999\.999\/9999\-99;0;_´...
se não resolver vc me dá o toque que tem outros jeitos....
Gostei + 0
12/11/2003
Lucas_rp
cpf := tbcliente.fieldbyname(´cpf´).asstring;
//aqui o conteudo da cpf é ´01.123.456/0001-40´
agora que eu iria tentar desformatar, mas não sei como.
Lucas.
Gostei + 0
12/11/2003
Cebikyn
var x : integer; str: String; begin // Edit1 contém o texto formatado: str := Edit1.Text; while Pos(´.´, Str) <> 0 do begin X := Pos(´.´, Str); Delete(Str, X, 1); end; while Pos(´-´, Str) <> 0 do begin X := Pos(´-´, Str); Delete(Str, X, 1); end; while Pos(´/´, Str) <> 0 do begin X := Pos(´/´, Str); Delete(Str, X, 1); end; // Edit2 conterá o texto sem formatação: Edit2.Text := Str; end;
Gostei + 0
16/11/2003
Carlos Bernardo
function DeleteChar(const Ch: Char; const S: string): string;
var
Posicao: integer;
begin
Result := S;
Posicao := Pos(Ch, Result);
while Posicao > 0 do begin
Delete(Result, Posicao, 1);
Posicao := Pos(Ch, Result);
end;
end;
e depois é só usá-la assim :
Edit1.Text := DeleteChar(´-´,Edit1.Text);
Edit1.Text := DeleteChar(´.´,Edit1.Text);
Edit1.Text := DeleteChar(´/´,Edit1.Text);
Gostei + 0
18/11/2003
Carlosrm
Só para aumentar as opções, vai mais uma:
procedure.....
var
I : Integer;
s : string;
begin
cpf := ´01.234.567/0001-89´;
s := emptystr;
for I := 1 to length(cpf) do
if (cpf[I] in [´0´..´9´]) then
s := s + cpf[I];
cpf := s; // ´01234567000189´
end;
abraço. carlosrm :wink:
Gostei + 0
18/11/2003
Beppe
function UnformatString(const S: String): String; function UnformatBuffer(Dest, Source: PChar; Len: Integer): Integer; asm push ebx push eax jmp @Check @Loop: mov bl, [edx] inc edx cmp bl, ´0´ jb @Skip cmp bl, ´9´ ja @Skip mov [eax], bl inc eax @Skip: @Check: dec ecx jns @Loop pop edx sub eax, edx pop ebx end; begin SetLength(Result, Length(S)); SetLength(Result, UnformatBuffer(Pointer(Result), Pointer(S), Length(S))); end;
Gostei + 0
18/11/2003
Cabelo
Com a mesma variável string que vc usa, faça assim
cpf := stringreplace(tbcliente.fieldbyname(´cpf´).asstring, ´.´, ´´, [rfReplaceAll]);
cpf := stringreplace(tbcliente.fieldbyname(´cpf´).asstring, ´/´, ´´, [rfReplaceAll]);
cpf := stringreplace(tbcliente.fieldbyname(´cpf´).asstring, ´-´, ´´, [rfReplaceAll]);
vai que dá certo, é mais rápido, pois utiliza uma função do Delphi.
Sem mais
Cabelo 8)
Gostei + 0
18/11/2003
Beppe
Isto não quer dizer nada. E isso pode ser mais rápido de digitar, mas em runtime é pelo menos umas 50 vezes mais lenta que a minha(eu acho que é isso que importa).
Gostei + 0
20/11/2003
Host
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)