Adicionar zero a esquerda!
08/04/2003
0
Em minha tabela esta sendo gravada assim ´1´, gostaria que gravasse assim ´000001´, como faço?[/b:52e3bd0ae7]
Anonymous
Post mais votado
11/04/2017
var Numero: Integer; begin Numero:= 123; Edit1.text:= Format('%5.5d',[Numero]); // resulta '00123'; end;
Solução simples e rápida
Wellington Telles
Mais Posts
08/04/2003
Afischer
Tenho uma função para campos string. Se ajudar em alguma coisa, aí vai ela:
function ZeroLeft(vZero: string; vQtd: integer): string;
var
i, vTam: integer;
vAux: string;
begin
vAux := vZero;
vTam := length( vZero );
vZero := ´´;
for i := 1 to vQtd - vTam do
vZero := ´0´ + vZero;
vAux := vZero + vAux;
result := vAux;
end;
André Fischer
08/04/2003
Marcelo
Em minha tabela esta sendo gravada assim ´1´, gostaria que gravasse assim ´000001´, como faço?[/b:2dc7a1bb79][/quote:2dc7a1bb79]
Vode pode usar assim:
var
i:string;
begin
fmtstr:=(i,´¬.6d´,[strtoint(edit1.text)]);{6 é o numeor de casas vc quer}
edit1.text:=i;{edit1.text é o campo onde esta o numero a ser formatado}
end;
Valeu?
at+...
08/04/2003
Aroldo Zanela
Em minha tabela esta sendo gravada assim ´1´, gostaria que gravasse assim ´000001´, como faço?[/b:08b3c0291c][/quote:08b3c0291c]
Luis,
Como o campo é numérico, ele vai gravar da forma que está fazendo atualmente, ou seja, sem os zeros à esquerda. Para conseguir o efetio que você deseja (gravar com zeros), teria que alterar o campo para algum tipo caracter.
Eu acredito que o melhor a se fazer e manter da forma que está e utilizar alguma função para [b:08b3c0291c]exibir com zeros a esquerda[/b:08b3c0291c].
function StrZero(iNumero, iComp: Integer): String; begin Result := StringOfChar(´0´,iComp-Length(IntToStr(iNumero)))+IntToStr(iNumero); end;
08/04/2003
Anonymous
08/04/2003
Jeová Soares
Mantenha o campo como está e utilize a segunte instrução:
label1.caption := formatfloat(´#00000´,campo1.value);
ou
edit1.text := formatfloat(´00000´,campo1.value);
09/04/2003
Dor_poa
function tbStrZero(const I: integer; const Casas: byte): string;
var
Ch: Char;
begin
Result := IntToStr(I);
if Length(Result) > Casas then
begin
Ch := ´*´;
Result := ´´;
end
else Ch := ´0´;
while Length(Result) < Casas do Result := Ch + Result;
end;
Exemplo de como usá-la:
var
S: string;
Numero: integer;
{...}
begin
{...}
S := tbStrZero(Numero, 6);
{...}
end;
Ou Ate mesmo:
Edit1.Text := FormatFloat(´000000´,StrToFloat(Edit1.Text));
Observações: Se o comprimento desejado (Casas) não for suficiente para conter o número, serão colocados asteriscos.
13/10/2012
Singular Ti
function PreencheZero(variavel:string; quant,posicao:integer):String; var i,tamanho:integer; aux: string; begin aux := Variavel; tamanho := length(Variavel); Variavel := ; for i:=1 to quant-tamanho do Variavel := Variavel + 0; if Posicao = 2 then aux := aux + Variavel; // esquerda if Posicao = 1 then aux := Variavel + aux; // direita Result := aux; end;
Abraços!!
14/10/2012
Thiago Schnell
function zerosaesquerda(s:string; quant:byte):string; begin for quant:=quant downto 1 do begin SetLength(s,succ(length(s))); Move(s[1],s[2],succ(length(s))* sizeof(char)); s[1]:=0; end; result:=s end;
14/10/2012
Marco Salles
Uma única linha , sem for sem while , simples e descomplicado
StringOfChar(SeuCaracter,QuantidadeDeCaracter-Length(SuaString))+SuaString);
muito fácil não ???
14/10/2012
Thiago Schnell
var s:string; begin s:=zerosaesquerda; caption:=StringReplace($+copy(s,1,length(s)) ,$,0000,[]) end;
14/10/2012
Marco Salles
var s:string; begin s:=zerosaesquerda; caption:=StringReplace($+copy(s,1,length(s)) ,$,0000,[]) end;
Não entendi .. quem é $ ??
14/10/2012
Marco Salles
var s:string; begin s:=zerosaesquerda; caption:=StringReplace($+copy(s,1,length(s)) ,$,0000,[]) end;
quando eu disse VCl , não quiz dizer que não se consegue o efeito com funçoes Copy , StringReplace, Length da VCL . O que me refero é que a StringOfChar é a função recomendada da VCL para esta finalidade como o próprio Help do Delphi a enuncia
In Delphi code, StringOfChar returns a string that contains Count characters, with the character value given by Ch. For example,
S := StringOfChar(A, 10);
sets S to the string AAAAAAAAAA.
16/04/2023
Joatan Lima
Em minha tabela esta sendo gravada assim ´1´, gostaria que gravasse assim ´000001´, como faço?[/b:08b3c0291c][/quote:08b3c0291c]
Luis,
Como o campo é numérico, ele vai gravar da forma que está fazendo atualmente, ou seja, sem os zeros à esquerda. Para conseguir o efetio que você deseja (gravar com zeros), teria que alterar o campo para algum tipo caracter.
Eu acredito que o melhor a se fazer e manter da forma que está e utilizar alguma função para [b:08b3c0291c]exibir com zeros a esquerda[/b:08b3c0291c].
[code:1:08b3c0291c]
function StrZero(iNumero, iComp: Integer): String;
begin
Result := StringOfChar(´0´,iComp-Length(IntToStr(iNumero)))+IntToStr(iNumero);
end;
[/code:1:08b3c0291c]
Como usar no delphi (como chamar)?
17/04/2023
Arthur Heinrich
Em minha tabela esta sendo gravada assim ´1´, gostaria que gravasse assim ´000001´, como faço?[/b:52e3bd0ae7]
Se o campo é numérico, ele armazena números em formato binário. Portanto, não é possível armazenar os zeros à esquerda, que não tem relevância para números.
O seu problema está relacionado à exibição dos valores armazenados e não ao armazenamento em si.
Existem duas formar de você resolver este problema.
1 - Alterar as telas e relatórios onde o número é exibido, para exibi-los com formatação, conforme algumas sugestões acima.
2 - Alterar o modelo e armazenar seu "código" numérico em colunas do tipo VARCHAR, que podem armazenar números já formatados.
Neste caso, é importante armazenar os valores sempre formatados, o que pode ser garantido por uma trigger, e, no momento de consultar, lembre-se de sempre comparar com valores texto, formatados.
Clique aqui para fazer login e interagir na Comunidade :)