Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   como trabajar con numeros 00000001, 00000022, 00023900 (https://www.clubdelphi.com/foros/showthread.php?t=70076)

JXJ 28-09-2010 19:49:37

como trabajar con numeros 00000001, 00000022, 00023900
 
como trabajar con numeros 000001, 000022, 00023900
no son binarios

son la forma en que recibo valores numericos.
00000001 = 1
00000022 = 22
00023900 = 23900

asi recibo los datos e internamente los tengo convertir a al fomato de salida
si recibo 00023900
procesarlo internamente como 23900
y al volverlo a mandar sea 00023900

me parece que la constante son la cantidad de caracteres
8 caracteres y el resto de la cadena (por que lo tengo que enviar como cadena) a la izuierda se rrellena con 0000

¿¿alguna idea de como leer los caracteres 0000 de la izquierda
y quedarme solo con los numeros de la derecha

y de agregarlos 0000 al enviar la cadena??

roman 28-09-2010 20:06:13

Cita:

Empezado por JXJ (Mensaje 377770)
¿¿alguna idea de como leer los caracteres 0000 de la izquierda
y quedarme solo con los numeros de la derecha

Código Delphi [-]
StrToInt('00023900');

Cita:

Empezado por JXJ (Mensaje 377770)
y de agregarlos 0000 al enviar la cadena??

Código Delphi [-]
Format('%.8d', [23900]);

// Saludos

olbeup 28-09-2010 20:10:07

Define dos variables:
Código Delphi [-]
var
  nNum: Integer;
  cNum: String;
Después:
Código Delphi [-]
nNum := StrToInt();
cNum := FormatFloat('00000000', nNum);
Un saludo.

JXJ 28-09-2010 20:14:24

no sabia que con Format se podia hacer.
Format('%.8d', [23900]);
Gracias Roman y Gracias olbeup


Cita:

Empezado por olbeup (Mensaje 377781)
Define dos variables:

Código Delphi [-]var
nNum: Integer;
cNum: String;



Después:

Código Delphi [-]nNum := StrToInt("El_Codigo");
cNum := FormatFloat('00000000', nNum);



Un saludo.


ecfisa 28-09-2010 20:54:34

Hola JXJ.

Te agrego otra forma de hacerlo:
Código Delphi [-]
{ Num: número - Cant: cantidad total de dígitos }
function CerosAIzquierda(Num, Cant: integer): string;
begin
  Result:= StringOfChar('0', Cant - Length(IntToStr(num))) + IntToSTr(num);
end;
Un ejemplo de llamada:
Código Delphi [-]
var
  i: Integer;
begin
  Memo1.Clear;
  for i:= 115 to 132 do
    Memo1.Lines.Add(CerosAIzquierda(i, 9));
end;

Saludos.

JXJ 21-02-2011 03:31:11

disculpen la ignorancia pero para hacerlo alrevez
como seria ?

osea ahora quiero agregar ceros al final del numero.

si recibo 23900000
procesarlo internamente como 239
y al volverlo a mandar sea 23900000

gracias por su atencion..

ecfisa 21-02-2011 04:19:26

Hola JXJ.

Sacar los ceros de la derécha:
Código Delphi [-]
function SacaCerosDerecha(const Cad: string): string;
var
  i: Integer;
begin
  Result:= Cad;
  i:= Length(Cad);
  while (Result[i]='0') and (i > 0) do
  begin
    Delete(Result, i, 1);
    Dec(i);
  end;
end;

Llamada ejemplo:
Código Delphi [-]
var
  NroRecibido, Aux: string;
  Nro: Integer;
begin
  NroRecibido:= '230900000';  // la cadena recibida
  Aux:= SacaCerosDerecha(NroRecibido);// Aux = cadena recibida sin los ceros a la derecha
  Nro:= StrToInt(Aux) ; // Nro = valor numérico de Aux.
  // en la variable NroRecibido, seguimos teniendo el valor original del string para volverlo a enviar.
  ...

Incorporé la variable Aux para ampliar el ejemplo, pero se puede prescindir de ella y hacer directamente:
Código Delphi [-]
 Nro:= StrToInt(SacaCerosDerecha(NroRecibido));


Un saludo.


La franja horaria es GMT +2. Ahora son las 18:19:02.

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