DanielTM 0 Denunciar post Postado Outubro 1, 2007 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
marcio.theis 3 Denunciar post Postado Outubro 1, 2007 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... Compartilhar este post Link para o post Compartilhar em outros sites
DanielTM 0 Denunciar post Postado Outubro 3, 2007 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
marcio.theis 3 Denunciar post Postado Outubro 3, 2007 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
DanielTM 0 Denunciar post Postado Outubro 3, 2007 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
DanielTM 0 Denunciar post Postado Outubro 3, 2007 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
marcio.theis 3 Denunciar post Postado Outubro 3, 2007 Faz a formatação dentro da function que faz a remoção do ponto e ou vírgula, assim você devolve tudo prontinho... Compartilhar este post Link para o post Compartilhar em outros sites
DanielTM 0 Denunciar post Postado Outubro 3, 2007 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
DanielTM 0 Denunciar post Postado Outubro 3, 2007 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
DanielTM 0 Denunciar post Postado Outubro 8, 2007 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
rento 0 Denunciar post Postado Outubro 10, 2007 Cara, pra que voce quer isso? avisa ai nois tentamos ver se ta certo oque voce quer Compartilhar este post Link para o post Compartilhar em outros sites
DanielTM 0 Denunciar post Postado Outubro 10, 2007 Cara, pra que voce quer isso? avisa ai nois tentamos ver se ta certo oque voce quertenho 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
marcio.theis 3 Denunciar post Postado Outubro 10, 2007 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
DanielTM 0 Denunciar post Postado Outubro 10, 2007 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
marcio.theis 3 Denunciar post Postado Outubro 10, 2007 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').ValueNã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
DanielTM 0 Denunciar post Postado Outubro 10, 2007 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
thalesoli 0 Denunciar post Postado Outubro 10, 2007 Coloque um parenteses de fechamento ) antes do ;falow Compartilhar este post Link para o post Compartilhar em outros sites
marcio.theis 3 Denunciar post Postado Outubro 11, 2007 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
DanielTM 0 Denunciar post Postado Outubro 11, 2007 valew moçada, o ) passou despercebido mesmo, topico resolvido, valew demais, e vou continuar estudando um dia chego lah... Compartilhar este post Link para o post Compartilhar em outros sites
marcio.theis 3 Denunciar post Postado Outubro 11, 2007 beleza... http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif Precisando volte a postar... :D Compartilhar este post Link para o post Compartilhar em outros sites