Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Ordenar digitos de menor a mayor (https://www.clubdelphi.com/foros/showthread.php?t=73608)

luisito2011 04-05-2011 20:11:06

Ordenar digitos de menor a mayor
 
ola..saludos a todoj. bueno .. aca el problema
quisiera que me corrigan lo que hise.

Ordenar digitos de un numero de menor a mayor---
ejem---N= 54321--N= 12345

//Aca esta la unidad con la que se supone tengo que hacer el ejercicio//
Código Delphi [-]
 
Unit caja1;
Interface
Uses
    SysUtils,dialogs;
Type
    CEMNumeroNatural = Class(Exception);
    CNumeroNatural = Class
       Private
              Valor : Cardinal;
 
       Public
             Constructor Crear;
             Procedure AsignarValor( NuevoValor : Cardinal);
             Procedure InsertarDigito( Posicion : Byte ; Digito : Byte);
             Procedure EliminarDigito( Posicion : Byte );
             Procedure Invertir;
             Function  ObtenerValor : Cardinal;
             Function  NumeroDigitos : Byte;
             Function  Digito( Posicion : Byte ) : Byte;
             Function  EsPrimo : Boolean;
             Function  EsPar : Boolean;
             Function  SumarDigitos : Byte;
             Function  DigitosPares : Byte;
             Function  DigitosImpares : Byte;
         End;
Implementation

//PUBLIC
Constructor CNumeroNatural.Crear;
Begin
     Valor := 0;
End;
Procedure CNumeroNatural.AsignarValor( NuevoValor : Cardinal);
Begin
     Valor := NuevoValor;
End;
Procedure CNumeroNatural.InsertarDigito     ( Posicion : Byte ; Digito : Byte);
Var
   Aux , Aux2 , Digi :Cardinal;
Begin
     Aux := Valor;
     If( Posicion > 0)and( Posicion <= NumeroDigitos )Then
     Begin
          Aux2 := 0;           Digi := 0;
          While( Digi <= NumeroDigitos-Posicion )do
          Begin
               Aux2 := ( Aux2 * 10 ) + Aux Mod 10;    Aux  :=   Aux Div 10;      Inc( Digi );
          End;
          Aux := ( Aux * 10 ) + Digito;//Inserta Digito
          While( Digi > 0 )do
          Begin
             Aux   := ( Aux * 10 ) + ( Aux2 Mod 10 );  Aux2  :=   Aux2 Div 10;      Dec( Digi );
          End;
          Valor := Aux;
     End
     Else
       Raise CEMNumeroNatural.Create
         ('CNumeroNatural.InsertarDigito: Error Fuera de RANGO...');
End;
Procedure CNumeroNatural.EliminarDigito( Posicion : Byte );
Var
   Aux , Aux2 , Digi :Cardinal;
Begin
     Aux := Valor;
     If( Posicion > 0)and( Posicion <= NumeroDigitos )Then
     Begin
          Aux2 := 0;
          Digi := 0;
          While( Digi < NumeroDigitos-Posicion )do
          Begin
               Aux2 := ( Aux2 * 10 ) + Aux Mod 10;
               Aux  :=   Aux Div 10;
               Inc( Digi );
          End;
          Aux := ( Aux Div 10 );//Elimina Digito
          While( Digi > 0 )do
          Begin
             Aux   := ( Aux * 10 ) + ( Aux2 Mod 10 );
             Aux2  :=   Aux2 Div 10;
             Dec( Digi );
          End;
          Valor := Aux;
     End
     Else
       Raise CEMNumeroNatural.Create
            ('CNumeroNatural.EliminarDigito: Error Fuera de RANGO...');
End;
Procedure CNumeroNatural.Invertir;
Var
   Aux , Aux2 , i :Cardinal;
Begin
     Aux2 := Valor;
     Aux  := 0;
     i    := 0;
     While( i < NumeroDigitos )do
     Begin
          Aux  := ( Aux * 10 ) + Aux2 Mod 10;
          Aux2 :=   Aux2 Div 10;
          Inc( i );
     End;
     Valor := Aux;
End;
Function  CNumeroNatural.ObtenerValor : Cardinal;
Begin
     Result := Valor;
End;
Function  CNumeroNatural.NumeroDigitos : Byte;
Var
   Aux : Cardinal;
   Cant : Byte;
Begin
     Aux := Valor;
     Cant := 0;
     Repeat
        Aux := Aux Div 10;
        Inc( Cant );
     Until(Aux = 0);
     Result := Cant;
End;
Function  CNumeroNatural.Digito( Posicion : Byte ) : Byte;
Var
   Aux : Cardinal;
   Digi , Digito : Byte;
Begin
     Aux := Valor;
     Digi := 0;
     if( Posicion > 0 )and( Posicion <= NumeroDigitos )then
     Begin
          Repeat
             Digito := Aux Mod 10;
             Aux := Aux Div 10;
             Inc( Digi );
          Until( Digi > NumeroDigitos-Posicion );
          Result := Digito;
     End
     Else
         Raise CEMNumeroNatural.Create
               ('CNumeroNatural.Digito: Error Fuera de RANGO...');
End;
 
 
 

Function  CNumeroNatural.EsPrimo : Boolean;
Var
   i , n : word;
   sw  : boolean;
Begin
      sw := true;
      i  := 2;
      while(i <= ( Valor div 2 ) ) and ( sw = true ) do
      Begin
           n := Valor mod i;
           if( n = 0 )then
              sw := false;
           i := i + 1 ;
      End;
      result := sw;
End;
Function  CNumeroNatural.EsPar : Boolean;
Begin
  Result := (valor mod 2)= 0 ;
End;
Function  CNumeroNatural.SumarDigitos : Byte;
Var
   Aux , Suma : Cardinal;
Begin
     Aux := Valor;
     Suma := 0;
     Repeat
        Suma := Suma +( Aux Mod 10 );
        Aux := Aux Div 10;
     Until( Aux = 0 );
     Result := Suma;
End;
Function  CNumeroNatural.DigitosPares : Byte;
Var
   Aux : Cardinal;
   Cant , Digito : Byte;
Begin
     Aux := Valor;
     Cant := 0;
     Repeat
        Digito := Aux Mod 10;
        Aux := Aux Div 10;
        If( Digito mod 2 = 0 )Then
            Inc( Cant );
     Until( Aux = 0 );
     Result := Cant;
End;
Function  CNumeroNatural.DigitosImpares : Byte;
Begin
     Result := NumeroDigitos-DigitosPares;
End;
Function  CNumeroNatural.ABinario : String;
Var
   Cad : String;
Unit caja1;
Interface
Uses
    SysUtils,dialogs;
Type
    CEMNumeroNatural = Class(Exception);
    CNumeroNatural = Class
      Private
              Valor : Cardinal;
      Public
             Constructor Crear;
             Procedure AsignarValor( NuevoValor : Cardinal);
             Procedure InsertarDigito( Posicion : Byte ; Digito : Byte);
             Procedure EliminarDigito( Posicion : Byte );
             Procedure Invertir;
             Function  ObtenerValor : Cardinal;
             Function  NumeroDigitos : Byte;
             Function  Digito( Posicion : Byte ) : Byte;
             Function  EsPrimo : Boolean;
             Function  EsPar : Boolean;
             Function  SumarDigitos : Byte;
             Function  DigitosPares : Byte;
             Function  DigitosImpares : Byte;

    End;
Implementation
//PUBLIC
Constructor CNumeroNatural.Crear;
Begin
     Valor := 0;
End;
Procedure CNumeroNatural.AsignarValor( NuevoValor : Cardinal);
Begin
     Valor := NuevoValor;
End;
Procedure CNumeroNatural.InsertarDigito     ( Posicion : Byte ; Digito : Byte);
Var
   Aux , Aux2 , Digi :Cardinal;
Begin
     Aux := Valor;
     If( Posicion > 0)and( Posicion <= NumeroDigitos )Then
     Begin
          Aux2 := 0;           Digi := 0;
          While( Digi <= NumeroDigitos-Posicion )do
          Begin
               Aux2 := ( Aux2 * 10 ) + Aux Mod 10;    Aux  :=   Aux Div 10;      Inc( Digi );
          End;
          Aux := ( Aux * 10 ) + Digito;//Inserta Digito
          While( Digi > 0 )do
          Begin
             Aux   := ( Aux * 10 ) + ( Aux2 Mod 10 );  Aux2  :=   Aux2 Div 10;      Dec( Digi );
          End;
          Valor := Aux;
     End
     Else
       Raise CEMNumeroNatural.Create
         ('CNumeroNatural.InsertarDigito: Error Fuera de RANGO...');
End;
Procedure CNumeroNatural.EliminarDigito( Posicion : Byte );
Var
   Aux , Aux2 , Digi :Cardinal;
Begin
     Aux := Valor;
     If( Posicion > 0)and( Posicion <= NumeroDigitos )Then
     Begin
          Aux2 := 0;
          Digi := 0;
          While( Digi < NumeroDigitos-Posicion )do
          Begin
               Aux2 := ( Aux2 * 10 ) + Aux Mod 10;
               Aux  :=   Aux Div 10;
               Inc( Digi );
          End;
          Aux := ( Aux Div 10 );//Elimina Digito
          While( Digi > 0 )do
          Begin
             Aux   := ( Aux * 10 ) + ( Aux2 Mod 10 );
             Aux2  :=   Aux2 Div 10;
             Dec( Digi );
          End;
          Valor := Aux;
     End
     Else
       Raise CEMNumeroNatural.Create
            ('CNumeroNatural.EliminarDigito: Error Fuera de RANGO...');
End;
Procedure CNumeroNatural.Invertir;
Var
   Aux , Aux2 , i :Cardinal;
Begin
     Aux2 := Valor;
     Aux  := 0;
     i    := 0;
     While( i < NumeroDigitos )do
     Begin
          Aux  := ( Aux * 10 ) + Aux2 Mod 10;
          Aux2 :=   Aux2 Div 10;
          Inc( i );
     End;
     Valor := Aux;
End;
Function  CNumeroNatural.ObtenerValor : Cardinal;
Begin
     Result := Valor;
End;
Function  CNumeroNatural.NumeroDigitos : Byte;
Var
   Aux : Cardinal;
   Cant : Byte;
Begin
     Aux := Valor;
     Cant := 0;
     Repeat
        Aux := Aux Div 10;
        Inc( Cant );
     Until(Aux = 0);
     Result := Cant;
End;
Function  CNumeroNatural.Digito( Posicion : Byte ) : Byte;
Var
   Aux : Cardinal;
   Digi , Digito : Byte;
Begin
     Aux := Valor;
     Digi := 0;
     if( Posicion > 0 )and( Posicion <= NumeroDigitos )then
     Begin
          Repeat
             Digito := Aux Mod 10;
             Aux := Aux Div 10;
             Inc( Digi );
          Until( Digi > NumeroDigitos-Posicion );
          Result := Digito;
     End
     Else
         Raise CEMNumeroNatural.Create
               ('CNumeroNatural.Digito: Error Fuera de RANGO...');
End;
 
 
 

Function  CNumeroNatural.EsPrimo : Boolean;
Var
   i , n : word;
   sw  : boolean;
Begin
      sw := true;
      i  := 2;
      while(i <= ( Valor div 2 ) ) and ( sw = true ) do
      Begin
           n := Valor mod i;
           if( n = 0 )then
              sw := false;
           i := i + 1 ;
      End;
      result := sw;
End;
Function  CNumeroNatural.EsPar : Boolean;
Begin
  Result := (valor mod 2)= 0 ;
End;
Function  CNumeroNatural.SumarDigitos : Byte;
Var
   Aux , Suma : Cardinal;
Begin
     Aux := Valor;
     Suma := 0;
     Repeat
        Suma := Suma +( Aux Mod 10 );
        Aux := Aux Div 10;
     Until( Aux = 0 );
     Result := Suma;
End;
Function  CNumeroNatural.DigitosPares : Byte;
Var
   Aux : Cardinal;
   Cant , Digito : Byte;
Begin
     Aux := Valor;
     Cant := 0;
     Repeat
        Digito := Aux Mod 10;
        Aux := Aux Div 10;
        If( Digito mod 2 = 0 )Then
            Inc( Cant );
     Until( Aux = 0 );
     Result := Cant;
End;
Function  CNumeroNatural.DigitosImpares : Byte;
Begin
     Result := NumeroDigitos-DigitosPares;
End;
End.
//Esto es lo que yo hice.. (lo hice en vector.. solo que tengo un problema.. al pasarlo en numero natural..)

Código Delphi [-]
 
procedure ordenar(var b:cnumeronatural);
var x,veces,i:integer;
begin
  for veces  := 1 to(b.NumeroDigitos - 1) do
    begin
      for i := 1 to (b.NumeroDigitos - veces) do
        begin
          if b.Digito(i) > b.Digito(I+1) then
          begin
           x:=b.digito(i);
            b.AsignarValor(b.Digito(I+1)* 10+ x);
          end;
        end;
    end;
end;
var a:cnumeronatural;
X:integer;
begin
a:=cnumeronatural.crear;
Writeln('Digite un Numero');
Readln(x);
a.AsignarValor(x);
ordenar(a);
writeln('Numero Ordenado De Menor a Mayor ',a.obtenervalor);
readln;

gatosoft 04-05-2011 21:16:38

Luisito, creo que tu problema está en los indices que utilizas en los bucles de ordenamiento... Por lo menos, en el "método de la burbuja" debería ser:

Código Delphi [-]
For i:= 1 to N-1 do
  For j:= i+1 to N do

Por otro lado te aconsejo, para mejorar tu clase:

1) utiliza las propiedades, son poderosas...

Código Delphi [-]
CNumeroNatural = Class (TObject)
Private
   FValor : Cardinal;
   procedure setValor(Value: Cardinal);
Public
  Property Valor: Cardinal read FValor write setValor;
end;//CNumeroNatural 

implementation

procedure setValor(Value: Cardinal);
Begin
  // validaciones, cálculos ...
  FValor := Value;
end;

De esta manera, no tenbdrias que llamar directamente el método: AsignarValor
así:

Código Delphi [-]
a:=cnumeronatural.crear;
Writeln('Digite un Numero');
Readln(a.Valor);

2) ¿Porqué el ordeamiento o hace parte de la clase?,

Código Delphi [-]
a.OrdenarDigitos

Eso por ahora...

Un saludo,

luisito2011 04-05-2011 21:20:20

.... eso de for.. si esta bien.. por que me funciona en vector
.... y tengo que resolver el ejercicio .. utilizando la unit.. que esta arriba..
y no puedo añadir ... o borrar .. nada de la unit...

luisito2011 04-05-2011 22:29:27

respondan .... porfavor

oscarac 04-05-2011 22:44:16

me he dado cuenta que a nuestro amigo luisito, le han dejado en su centro de estudios varios ejercicios y encima le han dado una libreria con la cual poder resolverlos

entonces (y no quiero ser despectivo ni petulante), creo que es cuestion de pensar y analizar un poquito cual es la solucion (con un martillo no puedo sacar clavos de una madera)

y me uno a lo menciono Roman en otro hilo

Casimiro Notevi 05-05-2011 00:21:25

Además de que hace falta que le des una releída a nuestra guía de estilo, amigo luisito2011, aquí estamos para ayudar, pero no para hacerle el trabajo a los demás. Si tanto te urge entonces tendrás que buscar a un profesional que te ayude, te pase la minuta, etc.

gatosoft 05-05-2011 03:13:27

Cita:

Empezado por luisito2011 (Mensaje 398936)
respondan .... porfavor

No se si reir o llorar... :eek:

Bueno luisito...

1) ¿a que te refieres con eso de: "con vector si funciona"?... por que no nos muestras el codigo ejemplo..

2) ¿A que te refieres con que "no funciona"?, te sale error?, te miuestra un numero, pero te lo muestra mal??


3) hice la prueba y efectivamente el ordenamiento sirve... pero veo que el probelma esta en el intercambio que haces en el codigo interno...

Código Delphi [-]
procedure ordenar(var b:cnumeronatural);
var x,veces,i:integer;
begin
  for veces  := 1 to(b.NumeroDigitos - 1) do
    begin
      for i := 1 to (b.NumeroDigitos - veces) do
        begin
          if b.Digito(i) > b.Digito(I+1) then
          begin
           x:=b.digito(i);
            b.AsignarValor(b.Digito(I+1)* 10+ x);
          end;
        end;
    end;
end;


Es decir... si has analizado lo que esto hace????

No hay que hacer debug para ver que en cada iteraccion se destruye el numero..!!!

Si tenemos un valor b.Valor ==> 89675 entonces:
x:=8 //en la primera iteraccion
b.Valor==> (9) * 10 + 8 ..!!!

En tu segunda iteraccion vale 98... es decir... 89675 se convirtio en 98...

¿Sabes como hacer un seguimiento paso a paso? podrias valerte de un memo o algo para ver lo que tu codigo esta mostrando...

un saludo.

luisito2011 05-05-2011 13:00:27

Cita:

Empezado por Casimiro Notevi (Mensaje 398955)
Además de que hace falta que le des una releída a nuestra guía de estilo, amigo luisito2011, aquí estamos para ayudar, pero no para hacerle el trabajo a los demás. Si tanto te urge entonces tendrás que buscar a un profesional que te ayude, te pase la minuta, etc.


no pue.. si yo quisiera que me resuelvan todo.. les pongo todos ejercicios... que me dieron.... de los 50.. son como 10 o 5..que me parte la cabeza..ademaj... solo posteo.. los que.. no le entiendo..
y solo les pedi...una ayuda... ni modo graciaj de todoj modos
bye

luisito2011 05-05-2011 13:02:12

[quote=gatosoft;398969]No se si reir o llorar... :eek:

voj.. si querej reite llora... hace lo que voj queraj..viejo..
nadie nace sabiendo...

quote]

Casimiro Notevi 05-05-2011 13:45:03

Cita:

Empezado por luisito2011 (Mensaje 399005)
nadie nace sabiendo...

Tienes toda la razón, amigo, el problema es que nos parece que no estás haciendo mucho esfuerzo, que estás exponiendo tus problemas un poco superficialmente a la espera de que te lo solucionen. Pero ya te digo, es la sensación que nos da.

Aquí no hay ningún problema en ayudar, al contrario, eso es lo que hacemos todos, para eso existe estos foros, pero la mayoría de esos problemas que nos relata no son "problemas", son cosas que se solucionan poniéndose a seguir paso a paso el código y pensando un poco.
Además que tienes la opción de buscar, hay cientos de miles de posts, también tienes la sección de trucos, y el FTP con muchísimo código, tutoriales, programas, ejemplos, libros, etc.

En fin, no estoy contando nada que no esté escrito en nuestras normas, la guía de estilo.

Saludos.

gatosoft 05-05-2011 17:50:37

Cita:

Empezado por luisito2011 (Mensaje 399005)
voj.. si querej reite llora... hace lo que voj queraj..viejo..
nadie nace sabiendo...

Cita:

Empezado por luisito2011 (Mensaje 399005)
no pue.. si yo quisiera que me resuelvan todo.. les pongo todos ejercicios... que me dieron.... de los 50.. son como 10 o 5..que me parte la cabeza..ademaj... solo posteo.. los que.. no le entiendo..
y solo les pedi...una ayuda... ni modo graciaj de todoj modos

Es cierto que nadie nace sabiendo, pero no puedes negar que hemos intentado ayudarte en este hilo... Así como en otros que has posteado...

Ya en un hilo pasado habia pasado algo parecido contigo, y apoyo el comentario de casimiro cuando dice

Cita:

nos parece que no estás haciendo mucho esfuerzo
Entendemos que estas empezando, pero parece que no has entendido la mecanica del club... (Es por eso que cada tanto te remiten a visitar la guia de estilo)

Vaya amigo, ya tienes un buen numero de post en este sitio, otros han abandonado ante la primera insinuación de "visitar la guia de estilo"... Te invito a que continues, pero por favor intenta tambien comprender que estamos aqui por que nos gusta ayudar y no por que tengamos que hacerlo... desde ese punto de vista no sobra un "por favor" y un gracias" pero de corazón.

y bueno, ya volviendo sobre tu tema, te repito mi teoria sobre la causa del error:

está en las líneas:

Código Delphi [-]
x:=b.digito(i);
b.AsignarValor(b.Digito(I+1)* 10+ x);

Debes generar un procedimeitno para reemplazar un digito dentro del número:

Código Delphi [-]
x:=b.digito(i);
b.ReemplazarDigito(I   , b.digito(i+1));
b.ReemplazarDigito(I+1, x);


Un saludo,

luisito2011 05-05-2011 23:10:45

mmm bueno eso del esfuerzo... si lo hago..
solo que si.. lo acepto es como si no lo haga...

//beuno dejando eso aparte.. aca resolvi mi problema... solo
que solo me funciona con 8 digitos..cuando pongo mas de 9.. error..//

me pueden decir por que...:confused:

Código Delphi [-]
 
procedure ordenar(var b:cnumeronatural);
var veces,i:integer;
begin
  for veces  := 1 to(b.NumeroDigitos - 1) do
    begin
      for i := 1 to (b.NumeroDigitos - veces) do
          begin
          if b.Digito(i) > b.Digito(I+1) then
          begin
            b.InsertarDigito(i,b.Digito(i+1));
            b.ObtenerValor;
             b.EliminarDigito(i+2);
          end;
        end;
    end;
end;

Casimiro Notevi 06-05-2011 00:47:32

Cita:

Empezado por luisito2011 (Mensaje 399100)
[..]
que solo me funciona con 8 digitos..cuando pongo mas de 9.. error..//
[..]

¿Y qué error es? :confused:

beginner01 06-05-2011 01:03:28

saludos.

porque no usas la propiedad invertir?

Código:

program Project1;
{$APPTYPE CONSOLE}
uses
  SysUtils,caja1;

 
 var a:cnumeronatural;
 X:integer;
 begin
  a:=cnumeronatural.crear;
  Writeln('Digite un Numero');
  Readln(x);
  a.AsignarValor(x);
  a.Invertir;
  writeln('Numero Ordenado De Menor a Mayor ',a.obtenervalor);
  readln;
 end.


luisito2011 06-05-2011 02:49:01

el error que me sale.. es // fuera de rango//

luisito2011 06-05-2011 02:54:26

Cita:

Empezado por beginner01 (Mensaje 399113)
saludos.

porque no usas la propiedad invertir?

Código:

program Project1;
{$APPTYPE CONSOLE}
uses
  SysUtils,caja1;
 
 
 var a:cnumeronatural;
 X:integer;
 begin
  a:=cnumeronatural.crear;
  Writeln('Digite un Numero');
  Readln(x);
  a.AsignarValor(x);
a.Invertir;
  writeln('Numero Ordenado De Menor a Mayor ',a.obtenervalor);
  readln;
 end.


No pue si uso el metodo invertir.. solo me sirve para los digitos
ordenados como 98765.. o 654321..

//Y sobre el error .. me sale fuera de rango..//
/

ecfisa 06-05-2011 05:14:37

Hola Luisito.

Este método 'tendría' que ordenarte lenta pero correctamente los dígitos de menor a mayor:
Código Delphi [-]
procedure CNumeroNatural.Ordenar;
var
  i,j:integer;
  a: Byte;
begin
   for i:= 1 to NumeroDigitos  do
    for j := i+1 to NumeroDigitos do
     if Digito(i) > Digito(j) then
     begin
       a:= Digito(i);
       InsertarDigito(i,Digito(j));
       InsertarDigito(j,a);
     end;
end;
Y digo 'tendría' por que así lo haría si el método InsertarDigito funcionara como se espera...

Como un ejemplo vale más que mil palabras, intentemos llenar los 6 dígitos de una cifra con ceros:
Código Delphi [-]
var
  N: TNumeroNatural;
  i: Integer;
begin
  N:= TNumeroNatural.Crear;
  N.AsignarValor(123456);
  for i:= 1 to 8 do
    N.InsertarDigito(i,0);
  ShowMessage(IntToStr(N.ObtenerValor));   
end;
Seguro que esperabas ver: 000000, pero por suerte la programación nunca deja de sorprendernos... :)
El resultado es: 3569126384

Un saludo.

luisito2011 06-05-2011 22:48:03

Cita:

Hola Luisito.

Este método 'tendría' que ordenarte lenta pero correctamente los dígitos de menor a mayor:

Código Delphi [-]
procedure CNumeroNatural.Ordenar;
var
i,j:integer;
a: Byte;
begin
for i:= 1 to NumeroDigitos do
for j := i+1 to NumeroDigitos do
if Digito(i) > Digito(j) then
begin
a:= Digito(i);
InsertarDigito(i,Digito(j));
InsertarDigito(j,a);
end;
end;





Un saludo
mmm.. si te das cuenta.. cuando uso el metodo.. de insertar digito
no remplaza al digito...
ejem... si quiero ordenar esto 54.. solo 2 numeros
mi respuesta sera esto 445554.. eso es con tu procedure..:rolleyes:

por eso en mi procedure.. utilize .. eliminardigito... pero solo me funciona con 8 digitos...

ecfisa 06-05-2011 23:37:59

Hola Luisito.

Entonces malinterpreté la función que realiza el método InsertarDigito. (Errare humanum est... :))
En cuanto al error que te genera al usar más 8 dígitos vas a tener que hacer un seguimiento del comportamiento del método o los métodos que te lo generan. Podés poner un break y hacer un TraceInto (F7) para ir viendo el comportamiento del método y también ir evaluando los valores que asumen sus variables.
Lamento no disponer del tiempo para hacer esa tarea.

Un saludo.


La franja horaria es GMT +2. Ahora son las 10:42:55.

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