Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

DanielTM

[Resolvido] Não consigo retirar a (,)

Recommended Posts

Fala pessoal, estou buscando um capo no banco de dados para gravar no txt, e para formatar o campo estou usando o FormatFloat, ok.e para retricar os (.) e (,) do campo to usando o StringReplace, ok.no caso nesse campo do db, preciso fazer as 2 coisas, format o campo e retirar a (,)fiz assim Write(arqS,FormatFloat('000.00',StrToInt(StringReplace(query2.FieldbyName('aliquotaiss').asstring,',','',[rfReplaceAll]))));no caso ele formata o campo mas nao tira a (,) <_< alguem pode me da uma forçinha...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Porque não cria uma pequena função que remove os pontos e vírgula e devolve formatado o valor como deseja ?Fica mais simples do que usar um monte de comandos...

custei mas fiz uma função para remover os pontos:BeginResult:='';for Conta:=1 to Length(x) doIf x[Conta]<>'.,' thenResult:=Result+x[conta]End;agora estou com duvidas de como aplicar a função no campo: Write(arqS, query2.FieldbyName('aliquotaiss').asstring);

Compartilhar este post


Link para o post
Compartilhar em outros sites

Basta chamar a procedure dentro do Write mesmo, digamos que o nome da procedure é REMOVE, então pode fazer algo como:

 

Write(arqS, Remove(query2.FieldbyName('aliquotaiss').asstring));

Compartilhar este post


Link para o post
Compartilhar em outros sites

Basta chamar a procedure dentro do Write mesmo, digamos que o nome da procedure é REMOVE, então pode fazer algo como:

Write(arqS, Remove(query2.FieldbyName('aliquotaiss').asstring));
hehhe tinha feito dessa maneira, agora que vi que o erro está em outro local, obrigado marcio.agora vou tentar fazer uma função para formatar os campos....

Compartilhar este post


Link para o post
Compartilhar em outros sites

no caso nao teria como fazer um função para formatar o campo, pq cada campo irei formatar de uma maneira, entao tenho mesmo que usar o comando formatfloat, tentei fazer da seguinte forma, colocar a função para tirar os ponto junto com o formatfloat, mas assim nao retirou o ponto : Write(arqS, TiraPontos(FormatFloat('00000000000.00', StrToFloat(query2.FieldByName('baseiss').asstring))));ta errada a sintaxe?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Faz a formatação dentro da function que faz a remoção do ponto e ou vírgula, assim você devolve tudo prontinho...

não entendi muito bem...no caso a função de retirar pontos to usando em varios campos que devem ser formatados, e cada campo tem uma formatação diferente, unica coisa em comum que todos preciso retirar os pontos, se colocar a formatação na função de retirar pontos, irá aplicar em todos os casos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Marcio se puder me ajudar nessa, lutei aqui, e fiz 2 funções para resolver meu problema, ja q tenho muitos campos e cada um em um formato, fiz 2 funções para fazer uma some de valores, que retora a formatação correta sem o (.) fiz assim //funcao para formatar campofunction zeros(mespacos: integer):string;varn:integer;aux:string;begin aux := ''; for n:= 1 to mespacos do aux := aux + '0'; zeros := aux;end;function FormataSemPontos(valor:real; tamanho: integer; decimais: integer):string;var aux : real; multiplicador:string;begin aux := valor; multiplicador := '1' + zeros(decimais); aux := aux * strtoint(multiplicador); FormataSemPontos := formatfloat(zeros(tamanho),aux);end;agora como sempre estou com dificuldades ao inserir a sintaxe no meu campo Write(arqS, query2.FieldByName('baseiss').asstring);tentei de varias formas , mas sempre com erros de sintaxe

Compartilhar este post


Link para o post
Compartilhar em outros sites

pessoal alguem me da uma luz, por favor: fiz uma função para formatar campos estilo moeda(no caso nao exatamente moeda), envio um valor, informo o (n) de numeros e o tamanho de casas decimais e ja removo a (,)function FormataSemPontos(valor:real; tamanho: integer; decimais: integer):string;var aux : real; multiplicador:string;begin aux := valor; multiplicador := '1' + zeros(decimais); aux := aux * strtoint(multiplicador); FormataSemPontos := formatfloat(zeros(tamanho),aux);end; faço Edit7.Text := FormataSemPontos(5,13,2); ( o numero 5 seria o numero a ser formatado) o (13 o tanho de numeros, seria 13 numeros) ( 2 seria o numero de casas deciamais tipo 10,00(2) casas) ok funfa tudo legal, a função, o problema está no campo a ser informado( seria o primeiro o numero 5) esse campo está no meu banco de dados: (query2.FieldByName('aliquotaiss').asstring)como q aplico, para pegar o valor do meu banco de dados? to perdidão, valew.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, pra que voce quer isso? avisa ai nois tentamos ver se ta certo oque voce quer

tenho um capo, e quero formatalo, e retirar a virgula, o problema, que tenho varios campos em varios formatos:exemplo tenho : 40,50 tenho q formatalo para 13 numeros e 2 casas decimais e retirar a virgula, ficaria assim : 0000000004050ae tenho outro campo 20,00 tenho q formatalo para 9 numeros e retirar a virgula, ficaria assim : 000002000estou analisando uma maneira mais rapida de fazer uma função para resolver meu problema, ja q ficaria pesado, fazer uma função para cada tipo de formatação .

Compartilhar este post


Link para o post
Compartilhar em outros sites

Veja se lhe ajuda:

 

procedure TForm1.BitBtn1Click(Sender: TObject);var	valor: Extended;	function FormataNumero(valor: Extended; numCasasDecimais, numPreenche: integer): string;	var		ret, aux: string;		y, tamanho: integer;	begin	aux:='';	ret:=FloatToStrf(valor,ffnumber,15,numCasasDecimais);	ret:=StringReplace(StringReplace(ret,',','',[rfReplaceAll]),'.','',[rfReplaceAll]);	if length(ret) > numPreenche then		ret:=copy(ret,1,numPreenche);	tamanho:=length(ret);	for y:=tamanho to (numPreenche - 1)  do		aux:=aux + '0';	ret:=aux + ret;	FormataNumero:=ret;	end;beginvalor:=40.50;Edit1.Text:=FormataNumero(valor,2,13);valor:=20;Edit2.Text:=FormataNumero(valor,2,9);end;

Compartilhar este post


Link para o post
Compartilhar em outros sites

valew marcio, mas minha principal duvida, e a seguinte, o valor do campo a ser formatado, está no meu banco de dados:(query2.FieldByName('aliquotaiss').asstring)nao estou sabendo e buscar esse valor do meu banco para ser formatado, colocar o uso da função nele...a função que fiz apesar de mto complicada heheehhe funcionava corretamente, so estava com essa mesma duvida nao stava sabendo pegar o (valor) que e do basto do dados e inserior na função para ser formatada....

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, pegar o valor usar uma query, faz o select e pronto, depois somente passar para a função, se usar como base meu exemplo acima, ficaria algo como:

 

 

procedure TForm1.BitBtn1Click(Sender: TObject);	function FormataNumero(valor: Extended; numCasasDecimais, numPreenche: integer): string;	var		ret, aux: string;		y, tamanho: integer;	begin	aux:='';	ret:=FloatToStrf(valor,ffnumber,15,numCasasDecimais);	ret:=StringReplace(StringReplace(ret,',','',[rfReplaceAll]),'.','',[rfReplaceAll]);	if length(ret) > numPreenche then		ret:=copy(ret,1,numPreenche);	tamanho:=length(ret);	for y:=tamanho to (numPreenche - 1)  do		aux:=aux + '0';	ret:=aux + ret;	FormataNumero:=ret;	end;beginEdit1.Text:=FormataNumero(query2.FieldByName('aliquotaiss').Value,2,13);end;

Passei diretamente como:

query2.FieldByName('aliquotaiss').Value
Não tem necessidade de converter para string, visto que a função solicita um double...

Compartilhar este post


Link para o post
Compartilhar em outros sites

fala marcio, ok fiz o teste com um edit, como voce disse: Edit7.Text:= FormataNumero(query2.FieldByName('aliquotaiss').Value,2,13);ok deu certinho mas quando vou gravar no txt da um erro: Write(arqS, FormataNumero(query2.FieldByName('aliquotaiss').asfloat,2,13);o erro:[Error] Unit1.pas(426): ',' or ')' expected but ';' foundmto estranho...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Coloque um parenteses de fechamento ) antes do ;falow

Compartilhar este post


Link para o post
Compartilhar em outros sites

Precisa fazer o que o thalesoli falou, colocar um ) no final, ficando:

 

Write(arqS, FormataNumero(query2.FieldByName('aliquotaiss').asfloat,2,13));
Precisa sempre verificar as mensagens do compilador do delphi, ele diz exatamente o problema e linha, e como neste caso diz o que faltava... http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.