elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  [RUBY] Es posible variable distinta dentro de for?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [RUBY] Es posible variable distinta dentro de for?  (Leído 3,350 veces)
tbgio

Desconectado Desconectado

Mensajes: 13


Ver Perfil
[RUBY] Es posible variable distinta dentro de for?
« en: 25 Julio 2011, 21:40 pm »

El asunto no sé como ponerlo mas resumido.

Lo que quiero es que se me genere dentro de un for tantas variables como veces se repita, pero todas las variables distintas, algo así:

Código:
for [i]i[/i] 1..5 do
valor[[i]i[/i]] = [i]i[/i] + 1
end

# => valor1 = 2
# => valor2 = 3
# => valor3 = 4
# => valor4 = 5
# => valor5 = 6

¿Es posible?


En línea

Novlucker
Ninja y
Colaborador
***
Desconectado Desconectado

Mensajes: 10.683

Yo que tu lo pienso dos veces


Ver Perfil
Re: [RUBY] Es posible variable distinta dentro de for?
« Respuesta #1 en: 25 Julio 2011, 21:53 pm »

Nunca he tocado Ruby más allá de un par de veces, pero no es la primera vez que veo ese tipo de pregunta (para muchos lenguajes diferentes), así que ... para que necesitas generar tantas variables y no usas un array/vector?

Saludos


En línea

Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD
"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein
tbgio

Desconectado Desconectado

Mensajes: 13


Ver Perfil
Re: [RUBY] Es posible variable distinta dentro de for?
« Respuesta #2 en: 25 Julio 2011, 22:41 pm »

porque estoy hacuiendo otro script para extraer archivos, y de la forma que este está hecho, tiene una parte que tiene los nombres de los archivos y otro que tiene los datos. Como no se especifica la distancia a la que está del nombre del archivo si no lo que mide, necesito que cada vez que se lea el nombre del archivo me guarde esta distancia en un variable distinta.

De todas formas, quizás estoy confundiendo variable con array.
Aún así, ¿me podría funcionar el comando push() para eso que quiero hacer?
En línea

Novlucker
Ninja y
Colaborador
***
Desconectado Desconectado

Mensajes: 10.683

Yo que tu lo pienso dos veces


Ver Perfil
Re: [RUBY] Es posible variable distinta dentro de for?
« Respuesta #3 en: 25 Julio 2011, 22:59 pm »

Me perdí, que distancia? que archivo? :xD

Explicate un poco mejor de que va el archivo que necesitas crear, y que hace el otro que ya tienes :P

Saludos
En línea

Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD
"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein
tbgio

Desconectado Desconectado

Mensajes: 13


Ver Perfil
Re: [RUBY] Es posible variable distinta dentro de for?
« Respuesta #4 en: 25 Julio 2011, 23:51 pm »

Tengo un archivo que está construido de la siguiente manera:

0x000 04 bytes: Número de direcciones en la tabla
0x004 04 bytes: Cuanto mide el contenido del archivo = $a
0x008 04 bytes: Cuanto mide el nombre del archivo = $b
0x00c $b bytes: Nombre del archivo

Despues de repetirse desde el 0x004 al 0x00c dependiendo de las direcciones que tenga la tabla, a continuación viene el contenido de cada archivo en el mismo orden en el que han aparecido.

Sabiendo esto, he creado el siguiente codigo:

Código:
nombrearchivo = "C:/Program Files/CCP/EVE/resLocalization.stuff"
arch = File.new(nombrearchivo, "rb")
arch_leer = File.new(nombrearchivo, "rb")
dirtotal = arch.sysread(4).unpack('V*').join.to_i
nombrearchivo = "hola/"
# Leo el archivo
cuenta0 = 4
valor5 = []
valor6 = []
for cuenta1 in 1..dirtotal do
valor1 = arch.sysread(4).unpack('V*').join.to_s
valor2 = arch.sysread(4).unpack('V*').join.to_i
cuenta0 = cuenta0 + 8
valor3 = cuenta0
for cuenta2 in 1..valor2 do
cuenta0 = cuenta0 + 1
valor4 = arch.read(1).bytes.first
if valor4 == 92
arch.seek(valor3, IO::SEEK_SET)
content = arch.read(cuenta2)
Dir::mkdir("#{nombrearchivo+content.chop}") unless File.directory?("#{nombrearchivo+content.chop}") == TRUE
end
end
arch_leer.seek(valor3, IO::SEEK_SET)
content = arch_leer.read(valor2)
cuenta0 = cuenta0 + 1
arch.sysread(1)
valor5.push(valor1)
valor6.push(content)
end
sleep 1
for cuenta2 in 0..dirtotal-1 do
puts "guardado #{nombrearchivo+valor6[cuenta2]}"
save_arch = File.open("#{nombrearchivo+valor6[cuenta2]}", File::CREAT | File::WRONLY | File::TRUNC)
save_arch.syswrite("#{valor5[cuenta2]}") unless File.directory?("#{nombrearchivo+valor6[cuenta2]}") == TRUE
end
puts "Fin"

El código no está terminado, pero con la función push() creo haber podido solucionar la duda que tenía.
En línea

tbgio

Desconectado Desconectado

Mensajes: 13


Ver Perfil
Re: [RUBY] Es posible variable distinta dentro de for?
« Respuesta #5 en: 26 Julio 2011, 00:08 am »

Script modificado. Por cierto, terminado el extractor de archivos *.stuff del juego EVE:
Código:
nombrearchivo = "C:/Program Files/CCP/EVE/resCharacterModularFemaleHiRes00.stuff"
arch = File.new(nombrearchivo, "rb")
dirtotal = arch.sysread(4).unpack('V*').join.to_i
eve = "EVE/"
Dir::mkdir("#{eve}") unless File.directory?("#{eve}") == TRUE
cuenta0 = 4
valor5 = []
valor6 = []
for cuenta1 in 1..dirtotal do
valor1 = arch.sysread(4).unpack('V*').join.to_i
valor2 = arch.sysread(4).unpack('V*').join.to_i
cuenta0 = cuenta0 + 8
valor3 = cuenta0
for cuenta2 in 1..valor2 do
cuenta0 = cuenta0 + 1
valor4 = arch.read(1).bytes.first
if valor4 == 92
arch.seek(valor3, IO::SEEK_SET)
content = arch.read(cuenta2)
Dir::mkdir("#{eve+content.chop}") unless File.directory?("#{eve+content.chop}") == TRUE
end
valor7 = cuenta0
end
arch.seek(valor3, IO::SEEK_SET)
content = arch.read(valor2)
arch.seek(valor7, IO::SEEK_SET)
cuenta0 = cuenta0 + 1
arch.sysread(1)
valor5.push(valor1)
valor6.push(content)
end
sleep 1
for cuenta1 in 0..dirtotal-1 do
puts "Creado #{eve+valor6[cuenta1]}"

save_arch = File.open("#{eve+valor6[cuenta1]}", File::CREAT | File::WRONLY | File::TRUNC)
save_arch.syswrite("#{arch.read(valor5[cuenta1])}") unless File.directory?("#{eve+valor6[cuenta1]}") == TRUE
end
puts "Fin"
En línea

Novlucker
Ninja y
Colaborador
***
Desconectado Desconectado

Mensajes: 10.683

Yo que tu lo pienso dos veces


Ver Perfil
Re: [RUBY] Es posible variable distinta dentro de for?
« Respuesta #6 en: 26 Julio 2011, 01:52 am »

Justamente me refería a utilizar un array ([]) para ir metiendo cada uno de esos valores que ibas leyendo, donde cada item del array es un elemento.

Por otra parte, te sugiero comenzar a utilizar variables que resulten más representativas, porque así como esta se hace bastante "feo" leer el código :xD

Saludos
En línea

Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD
"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein
tbgio

Desconectado Desconectado

Mensajes: 13


Ver Perfil
Re: [RUBY] Es posible variable distinta dentro de for?
« Respuesta #7 en: 27 Julio 2011, 21:54 pm »

Ya ya jajaja, gracias, y así lo hago, pongo cosas mas lógicas que no valorX, pero este lo hice muy rápido porque me urgía sacarlos archivos.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Variable incremental dentro de un FOR
Scripting
Stati98 2 3,799 Último mensaje 22 Julio 2009, 20:48 pm
por Stati98
[Batch]No consigo que funcione una variable dentro de un for
Scripting
teamcpc 1 3,450 Último mensaje 15 Enero 2011, 18:06 pm
por leogtz
[Ruby] Modificar variable de un objeto dentro de una clase
Scripting
Eleкtro 2 3,201 Último mensaje 23 Febrero 2012, 10:52 am
por Eleкtro
(Solucionado) [Ruby] Exportar una variable a la shell del SO?
Scripting
Eleкtro 1 2,800 Último mensaje 3 Marzo 2012, 02:40 am
por Eleкtro
pasar atributo value a variable en Ruby
Scripting
daniel.r.23 2 2,222 Último mensaje 12 Marzo 2013, 16:34 pm
por daniel.r.23
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines