25/01/2006

Formatar String, tem como?

Olá amigos,

Será que alguem tem alguma função para formatar string?

tipo, no meu arquivo texto eu trago tudo como texto (string), porem eu queria que ao passar a formatacao ele formatasse a string... do tipo:
string:        mask                result
01012001   dd/mm/yyyy     01/01/2001
500            R$#,0.00  R$500,00


Alguem teria uma função pra isso? ou o próprio delphi tem?

Obrigado desde já...

[]s


Titanius

Respostas

25/01/2006

Aasn

Olá Titanius,

O Delphi tem várias funções e procedures para formatação de strings, dê uma olhada no help em ´Format Strings´ para ver qual se encaixa melhor.

tente essa:

procedure FmtStr(var StrResult: string; const Format: string; const Args: array of const);

ex:

FmtStr(VariavelFinal, "#,0.00", &91;VariavelOriginal&93;);



[]´s
AASN


Responder Citar

25/01/2006

Titanius

Olá Titanius, O Delphi tem várias funções e procedures para formatação de strings, dê uma olhada no help em ´Format Strings´ para ver qual se encaixa melhor. tente essa:
procedure FmtStr(var StrResult: string; const Format: string; const Args: array of const);

ex:

FmtStr(VariavelFinal, "#,0.00", &91;VariavelOriginal&93;);

[]´s AASN


Valeu... vou dar uma lida...

Obrigado.


Responder Citar

25/01/2006

Michael

Olá!

O Delphi provê a função [b:089dc51585]Format[/b:089dc51585], que recebe uma string com determinadas máscaras, e as substitui por valores não-string. Veja um exemplo:

var
  S: string;
begin
  S := Format(´Meu nome é ¬s e tenho ¬d anos´, [´Michael´, 21&93;);
  // S será Meu nome é Michael e tenho 21 anos
end;


Acho difícil fazer o que vc mencionou (01012001 e a máscara dd/mm/yyyy), pois como saber que [b:089dc51585]dd [/b:089dc51585]significa os 2 primeiros digitos (e se tivesse só 1?), e [b:089dc51585]mm [/b:089dc51585]o 3º e o 4º e assim por diante?.

Pesquise no help do Delphi por [b:089dc51585]Format function[/b:089dc51585] e [b:089dc51585]Format strings[/b:089dc51585], para conhecer melhor a função e saber quais máscaras estão disponíveis.

Colega [b:089dc51585]AASN[/b:089dc51585], a procedure [b:089dc51585]FmtStr [/b:089dc51585]faz a mesma coisa que [b:089dc51585]Format[/b:089dc51585], mas passa a string formatada para a variável informada no primeiro parâmetro, pois trata-se de uma procedure. Aliás, Format chama FmtStr internamente. E a máscara que vc informou infelizmente não é suportada pela função. :-(


[]´s


Responder Citar

25/01/2006

Titanius

vixi..
no caso consegui resolver em partes, pois precisava mesmo soh pra numeros, as datas nao... :D

Michael aproveitando... só pra nao abrir outro topico..

tenho um aplicativo que usa ClientDataSet, pois bem, sei que ele usa o midas.dll, aí pra nao levar essa dll pro usuario eu coloquei Midas no uses do Formulario.. pois bem, teoricamente nao deveria usar o midas.dll nao eh? mas quando eu abro a tela e abro o CDS, no Event Log do debug aparece lá :

Module load: midas.dll blablablabla..

ou seja, mesmo assim terei que levar o midas.dll?


[]s


Responder Citar

25/01/2006

Michael

Se for apenas para formatar números em uma string, então Format resolve. ;-)

Esqueci de mencionar, mas vc pode usar tbm [b:675d15bbac]expressões regulares[/b:675d15bbac], e aí tratar a string do jeito q vc quiser. Não há uma maneira nativa de se fazer isso com o Delphi, mas existem componentes free para a tarefa. Se precisar usar, é só dizer que te indico um excelente.

Sobre o ClientDataSet, a unit não é [b:675d15bbac]MidasLib[/b:675d15bbac], ao invés de [b:675d15bbac]Midas[/b:675d15bbac]?

[]´s


Responder Citar

25/01/2006

Titanius

Sobre o ClientDataSet, a unit não é [b:bb66f00b76]MidasLib[/b:bb66f00b76], ao invés de [b:bb66f00b76]Midas[/b:bb66f00b76]? []´s


Cara, era isso mesmo.. o estranho eh que não estava dando erro na compilação.. eh mole!?!

Obrigado,

[]s


Responder Citar