Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: esbxp en Julio 04, 2012, 11:46:35 PM

Título: Rellenar con Ceros en String Numerico ???
Publicado por: esbxp en Julio 04, 2012, 11:46:35 PM
Hola:

Tengo esto iValor = 23

StrValor = "Sector_" + string_format(i,4,0) +".jpg"

Necesito   esto:          "Sector_0023.jpg"
y aparece esto:          "Sector_  23.jpg"

Obviamente necesito rellenar con ceros antes del valor, alguna idea !!!


Título: Re:Rellenar con Ceros en String Numerico ???
Publicado por: dark_servant en Julio 05, 2012, 02:27:01 AM
no se ven tus imagenes, no tiene icono de gm usas, pero bueno para mostrar ceros antes de un string seria asi

valor=2
if valor <9{
draw_text  "000000"+string(valor)
}
if valor <99{
draw_text  "00000"+string(valor)
}

lo puedes adecuar condicionando los demas valores
Título: Re:Rellenar con Ceros en String Numerico ???
Publicado por: Jucarave en Julio 05, 2012, 03:58:47 AM
Hola, puedes resolverlo de una manera muy sencilla:

[gml]
counter = 83; //Valor a mostrar

text = "0000"; //Cantidad de digitos
text = string_copy(text,0,string_length(text)-string_length(string(counter))); //Cantidad de digitos ajustada

draw_text(16,16,text+string(counter)); //Imprimiendo el texto
[/gml]

Este código funciona para cualquier cantidad de dígitos, puedes cambiar

text = "0000";
por
text = "000000000";

y seguirá funcionando


Saludos.
Título: Re:Rellenar con Ceros en String Numerico ???
Publicado por: esbxp en Julio 05, 2012, 04:29:54 AM
ahhhh : Gracias

muy bueno si funciona ... vale !!!!
Título: Re:Rellenar con Ceros en String Numerico ???
Publicado por: Zeit en Julio 06, 2012, 07:21:22 PM
Hola, puesdes crear un script tipo tiempo, me explico:

n=23 -> d1=0, d2=0, d3=2, d4=3

d1=floor(23/1000);
d2=floor((n-1000*d1)/100);
d3=floor((n-1000*d1-100*d2)/10);
d4=floor((n-1000*d1-100*d2-100*d3)/1);

texto=string(d1)+string(d2)+string(d3)+string(d4);

Este es un proceso muy sencillo que se puede automatizar y reducir en mucho las operaciones, Saludos.
Título: Re:Rellenar con Ceros en String Numerico ???
Publicado por: esbxp en Julio 06, 2012, 07:40:32 PM
Hey la tengo,,, miren

   i = 55       //. El Numero a Convertir  55
   k = 4        //. la Cantidad  de Ceros a Rellenar

   kStr = string_format((i/10000),1, k)      //. Resulta en  "0.0055"
   hStr = string_copy(kStr,3, k)                 //. Luego se copia el String después del Punto

   Ahora una Sugerencia:
   (i / 10000)  es la división para que me de las milesimas, pero esta expresión en tablas matemáticas acá esta
   fija, pero para que sea  adaptada al valor de la variable k,,,

   Tiene que expresarse como: 1 e4 
   Se dice: 1 exponente 4, prueben en sus calculadoras

   entonces la expresión debe ser ...
   Cincuenta y Cinco DIVIDIDO en Uno EXPONENTE 4

   osea: 55 / 1 e4      //. YO No se como se hace el exponente en GML

   sería  i / 1  * elevado(exponente(4))       //. YO no se

  pero esa es la expresión matemática,, y funcionaría con los ceros que queramos darle

  Comentenme !!!

   
Título: Re:Rellenar con Ceros en String Numerico ???
Publicado por: Texic en Julio 06, 2012, 08:00:45 PM
Los exponentes se calculan con la función power(x,n), así que quedaría power(1,4)
Igual no hace falta tanto cálculo, poner 10000 de llano es mejor que power(1,4), escribir código más corto no significa más óptimo, en casos como este es al revés
Me gustó el script, pero tiene fallas, no funciona con números decimales
Sería mejor usar
text="245"
largo=5
len=largo-string_length(text)
if len>0{
repeat(len){
text="0"+text}}
Título: Re:Rellenar con Ceros en String Numerico ???
Publicado por: esbxp en Julio 06, 2012, 09:14:41 PM
Gracias me gustaron mucho sus respuestas, para encontrar soluciones eficientes, pero en conclusión me
me quedare con este código, y les dejare acá el Script, como agradecimiento, por si  alguien más
lo necesita ...

gracias a todos !!!
caso cerrado !!!

/*
  Script  : RellenarCeros
  Llamada : RellenarCeros(245, 6)
            Resultado:  000245
  argument[0] = ElNumero Entrante
  argument[1] = La Longitud de Ceros + Numero 

  by esbxp
*/
{
   strNumero = string(argument[0])
   Longitud  = argument[1]
   espacios  = Longitud - string_length(strNumero)
   strTexto  = "0"
   repeat (espacios -1) {
      strTexto = strTexto + "0"
   }
   strTexto = strTexto +  strNumero

   return strTexto
}