Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Agregar digitos (https://www.clubdelphi.com/foros/showthread.php?t=87692)

maxzama 12-02-2015 19:47:01

Agregar digitos
 
Hola.

reglas que se tienen que cumplir:

Numero de Personas: tiene que tener 11 dígitos (sino tiene los 11 dígitos rellenar con 0 a la derecha los dígitos
faltan-te);


Ej: Nº personas 12345 : entonces que me imprima en pantalla lo siguiente=00000012345


se que tengo que utilizar una condicion de pregunta, y utlizar las funciones pos, str (pero hasta hay es lo que se)...

espero sus respuesta por favor y gracias...

ecfisa 12-02-2015 20:01:58

Hola maxzama.

Tres opciones:
Código Delphi [-]
var
  cad: string;
begin
  cad:= '12345';
  ShowMessage(
  {Opcion 1} StringOfChar('0', 11 - Length(cad)) + cad   + ' - ' +
  {Opcion 2} Format('%.11d',[StrToInt(cad)]) + ' - ' +
  {Opcion 3} Copy('00000000000', 1, 11 - Length(cad)) + cad
  );

Saludos :)

Casimiro Noteví 12-02-2015 20:26:55

Cita:

Empezado por maxzama (Mensaje 488745)
...se que tengo que utilizar una condicion de pregunta, y utlizar las funciones pos, str (pero hasta hay es lo que se)...
espero sus respuesta por favor y gracias...

Como siempre, tú esforzándote al máximo para aprender ;)

maxzama 12-02-2015 20:30:25

gracias, tu información esta copiado y plasmado...

nlsgarcia 12-02-2015 20:40:21

maxzama,

Cita:

Empezado por maxzama
...Numero de Personas: tiene que tener 11 dígitos...Ej: Nº personas 12345 : entonces que me imprima en pantalla lo siguiente=00000012345...

:rolleyes:

Revisa este código:
Código Delphi [-]
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Edit1: TEdit;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
   LenStr : Integer;
   AuxStr : String;
   i : Integer;

begin

    AuxStr := Edit1.Text;

    LenStr := Length(AuxStr);

    if LenStr > 11 then
       raise Exception.Create('Longitud Máxima de Variable es 11');

    for i := 1 to LenStr do
       if not (AuxStr[i] in ['0'..'9']) then
          raise Exception.Create('Solo se Permiten Caracteres Númericos');

    if LenStr < 11 then
       AuxStr := StringOfChar('0', 11-LenStr) + Edit1.Text;

    ShowMessage(AuxStr);

end;

procedure TForm1.Button2Click(Sender: TObject);
var
   LenStr : Integer;
   AuxStr : String;
   i : Integer;

begin

   AuxStr := Edit1.Text;

   LenStr := Length(AuxStr);

   if LenStr > 11 then
      raise Exception.Create('Longitud Máxima de Variable es 11');

   for i := 1 to LenStr do
      if not (AuxStr[i] in ['0'..'9']) then
         raise Exception.Create('Solo se Permiten Caracteres Númericos');

   AuxStr := Format('%.11d',[StrToInt(Edit1.Text)]);

   ShowMessage(AuxStr);

end;

end.
El código anterior en Delphi 7 sobre Windows 7 Professional x32, permite rellenar con 0 a la izquierda una cantidad numérica de máximo 11 dígitos y muestra el resultado por medio de 2 métodos diferentes.

Espero sea útil :)

Nelson.

maxzama 12-02-2015 20:55:10

Gracias, me a sido muy útil (nlsgarcia). Me as dado nuevas ideas...

maxzama 12-02-2015 21:03:19

Asi es: Casimiro Notevi.

jajaja.

Te entiendo Casimiro Notevi. Se que no muestro mis código(al hacer las preguntas), pero antes de hacer una pregunta, leo bastante.

Y así es como entiendo, de cada código que me muestran(aunque sea un código sencillo).

Casimiro Noteví 12-02-2015 21:33:15

Bueno, está bien que aprendas, de eso se trata :)

nlsgarcia 12-02-2015 22:09:49

maxzama,

Cita:

Empezado por maxzama
...antes de hacer una pregunta, leo bastante...

:rolleyes:

Revisa esta información:
Espero sea útil :)

Nelson.

maxzama 12-02-2015 22:23:37

Hola, nuevamente.

// e intentado varias veces y no e encontrado hacer lo siguiente:

Como puedo agregar los 0 al contrario. Es decir agregar lo cero a la derecha...


Ej:

Código Delphi [-]
Regla a cumplir: cad= 10 dígitos;

cad:123

imprima en pantalla 1230000000

Este es el siguiente código(Se que son, para reírse o llorar ):

n:=StringOfChar(' ',11)

while not (Length(n)=cad) do
begin
      cad:=cad+'0';
      next;
end;

espero sus respuesta por favor y gracias...

maxzama 12-02-2015 22:29:30

gracias, nlsgarcia. (ya tengo conque, para perder el tiempo)...

nlsgarcia 12-02-2015 22:52:05

maxzama,

Cita:

Empezado por maxzama
...Como puedo agregar los 0 al contrario. Es decir agregar lo cero a la derecha...

:rolleyes:

Revisa este código:
Código Delphi [-]
procedure TForm1.Button3Click(Sender: TObject);
var
   LenStr : Integer;
   AuxStr : String;
   i : Integer;

begin

    AuxStr := Edit1.Text;

    LenStr := Length(AuxStr);

    if LenStr > 11 then
       raise Exception.Create('Longitud Máxima de Variable es 11');

    for i := 1 to LenStr do
       if not (AuxStr[i] in ['0'..'9']) then
          raise Exception.Create('Solo se Permiten Caracteres Númericos');

    if LenStr < 11 then
       AuxStr := Edit1.Text + StringOfChar('0', 11-LenStr);

    ShowMessage(AuxStr);

end;
El código anterior en Delphi 7 sobre Windows 7 Professional x32, permite rellenar con 0 a la derecha una cantidad numérica de máximo 11 dígitos y muestra el resultado.

Espero sea útil :)

Nelson.

maxzama 12-02-2015 23:54:11

gracias, disculpa la molestia.

lo tenia en mis narices:

Código Delphi [-]
AuxStr := Edit1.Text + StringOfChar('0', 11-LenStr);

Código Delphi [-]
He := h+StringOfChar ‎('0',10-length(h));

ecfisa 13-02-2015 00:19:16

Hola maxama.

Y para redondear la cosa, podés unificar las acciones en una sola función que reciba como parámetro una cantidad arbitraria de ceros:
Código Delphi [-]
type
  TZeroCourse = (zLeft, zRight);

function AddZeros(const cifra: string; const zeros: Integer;
  Course: TZeroCourse): string;
begin
  if Course = zLeft then
    Result:= StringOfChar('0', zeros - Length(cifra)) + cifra
  else
    Result:= cifra + StringOfChar('0', zeros - Length(cifra));
end;

Ejemplo de uso:
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
begin
  Label1.Caption:= AddZeros('13245',17, zLeft);
  Label2.Caption:= AddZeros('12345',15, zRight);
end;

Saludos :)

nlsgarcia 13-02-2015 00:43:07

Daniel,

Cita:

Empezado por ecfisa
...Y para redondear la cosa, podés unificar las acciones en una sola función que reciba como parámetro una cantidad arbitraria de ceros...

^\||/

Nelson.

ElKurgan 13-02-2015 08:39:55

Cita:

Empezado por ecfisa (Mensaje 488769)
Hola maxama.

Y para redondear la cosa, podés unificar las acciones en una sola función que reciba como parámetro una cantidad arbitraria de ceros:

De hecho, si además le pasas otro parámetro "const Carácter: Char" puedes concatenar cualquier tipo de dígito o carácter alfanumérico:

Código Delphi [-]
type
  TZeroCourse = (zLeft, zRight);

function AddChars(const cifra: string; const zeros: Integer; const Caracter: Char;
  Course: TZeroCourse): string;
begin
  if Course = zLeft then
    Result:= StringOfChar(Caracter, zeros - Length(cifra)) + cifra
  else
    Result:= cifra + StringOfChar(Caracter, zeros - Length(cifra));
end;

Y su uso, por ejemplo:

Código Delphi [-]
Label1.Caption:= AddChars('13245',17, '*', zLeft);

Saludos


La franja horaria es GMT +2. Ahora son las 03:48:20.

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