Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 18-08-2005
Avatar de santiago14
santiago14 santiago14 is offline
Miembro
 
Registrado: sep 2003
Ubicación: Cerrillos, Salta, Argentina
Posts: 583
Poder: 21
santiago14 Va por buen camino
Problema con format

Hola tengo lo siguiente:
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
//devuelve un nro en formato string con la cantidad de ceros a la izquierda necesarias
var
  formato:string;
  cantDigitos:integer;
  nro:integer;
begin
  cantDigitos:=strToInt(Edit2.text);
  nro:=StrToInt(Edit1.Text);
  formato:='%0.' + intToStr(cantDigitos) + 'd';
  Edit3.Text:=format(formato,[nro]);
end;

nro=15
Por ejemplo, cuando cantDigitos = 5, devuelve: 00015, y esto está bien.
Pero cuando cantDigitos es mayor a 16 devuelve: 15, yo quiero que devuelva el string con la cantidad de ceros que corresponda, por ejemplo: cantDigitos = 18, y devuelva: 000000000000000015, cosa que no sucede.
Quisiera saber que pasa, y si format no da para mas de 16 digitos que alguien me diga como resolver este problemita. Gracias.
__________________
Uno es responsable de lo que hace y de lo que omite hacer.
Responder Con Cita
  #2  
Antiguo 18-08-2005
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Parece ser que ese es el límite.

Prueba este par de funciones:

Código Delphi [-]
uses StrUtils;

function LPad(S: String; Len: Integer; Ch: Char): String; overload;
begin
  Len := Len - Length(S);
  if Len < 0 then Len := 0;
  Result := DupeString(Ch, Len) + S;
end;

function LPad(D: Integer; Len: Integer; Ch: Char): String; overload;
begin
  Result := LPad(IntToStr(D), Len, Ch);
end;


Uso:

Código Delphi [-]
Edit1.Text := LPad(15, 32, '0'); // devuelve '15' precedido de 30 ceros
Edit1.Text := LPad('hola', 32, '#'); // devuleve 'hola' precedido de 28 '#'

// Saludos
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 23:09:18.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi