Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - FerJGS

#1
Hola amigos. Mi pregunta es la siguiente.

Me gustaría poder pasar un color como argumento a una función de javascript.

La idea es que dependiendo de qué opción seleccione el usuario, el fondo de un elemento sea de un color u otro. El código que tengo es el siguiente:

document.getElementById(x).style.backgroundColor = "#88CCFF";

Me gustaría que este color (88CCFF) no fuera fijo, sino que fuera una variable que yo le pueda pasar a la función. Evidentemente puedo mandarle el color como texto, pero JS no lo reconoce como color. ¿Cómo hago? Muchas gracias.
#2
Hola amigos. Estoy intentando leer cadenas de texto de un archivo. A otra gente le funciona pero a mí sólo me lee 3 caracteres. ¿Alguien me puede ayudar? Muchas gracias

Citar
int LINEA_MAX = 1000;
char linea[LINEA_MAX];
if (fp==NULL)
{
perror ("Error al abrir fichero.txt\n\n");
return -1;
}
else{
printf("Archivo abierto\n\n");
}

while (fgets(linea,LINEA_MAX,fp) != NULL)
{
printf("Abriendo: %s\n", linea);
ShellExecute(NULL,"open",linea, NULL, NULL, SW_SHOWNORMAL);
Sleep(1500);
}
printf("\nCerrando archivo...\n");
fclose(fp);
printf("Archivo cerrado\n");
return 0;
}
#3
Hola moikano, llevo bastante tiempo sin visitar el foro. Bueno, te explico lo de for. Aquí te dejo un trozod el tutorial que escribí hace tiempo, algo resumindo:
Citar
For es una función muy variada y completa. Nos permite analizar segmentos de la salida de comandos, funciones y el contenido de archivos. En realidad la definición más correcta de FOR es "Comando que ejecuta el comando para cada uno de los archivos especificados en el conjunto de archivos". Ya hemos dicho que para hacer bucles usamos un marcador, pero también ponemos usar for pero es algo más complicado que con marcadores. Pero generalmente, para cosas que no son bucles: Enumeración de archivos.

La sintaxis de este comando es
FOR %%var IN (conjunto) DO (acciones)   
La sintaxis es algo compleja pero muy eficaz. Analicémosla:

%%var=nombre de la variable...siempre tiene que estar precedido de dos %% si está en una línea de comandos, el nombre de la variable solo puede ser una letra, y se distinguen entre mayúsculas y minúsculas. (EJ %%O, %%A, %%a etc....)
(Conjunto)=archivos o dígitos con los que queremos trabajar, lo podemos separar con espacios, comas o punto y comas.
(Acciones)=Un comando con el que queremos ejecutar todo el conjunto. El comando puede llevar sus variantes (ejemplo: ...DO (echo %%var.,...DO del /f /q %%var...)

FOR %%a IN (archivo1.txt archivo2.exe archivo3.ini) DO del /f /q %%a
Lo que haríamos en esta línea sería lo siguiente

En el conjunto cogemos a archivo1.txt, a archivo2.exe y a archivo3.ini. Para llamar al conjunto entero usaremos la variable %%a. Luego con el comando del /f /q (%%a) borramos cada parte del conjunto que contiene la variable %%a

FOR %%var IN (d*) DO echo %%var
Lo que hacemos con el for es que nos muestre todos los archivos que comiencen por la letra "d" en el directorio predeterminado o el especificado por cd\push o popd (comando CD: posicionarse en otra carpeta)

*.exe = Todos los archivos que acaben en .exe
?.exe = Todos los archivos que tengan UNA letra y acaben en .exe

*= caracteres cualquiera
?=único carácter (cualquiera)

Veamos cómo usar FOR para los bucles

Hemos de añadir el modificador /L (de loop – bucle)

For /L %%variable (valor inicial, incremento por repetición, final (detención)) do (comandos)

Definiremos el valor inicial de la variable pero con los dos por cientos al principio. Después, entre paréntesis, pondremos el valor inicial, después la condición para que se siga repitiendo el bucle (mientras), y por último, el cambio por repetición. Do (hacer) especifica (entre paréntesis) los comandos que se hacen durante el bucle.

FOR /L %%x in ( 0,1,5 ) Do ( echo %%x )

te devuelve

0
1
2
3
4
5

Aquí lo vemos claramente: 0 es el valor inicial, aumenta 1 cada repetición y el final se da cuando la variable alcanza 5. Se mostrarán esos números porque hemos elegido en "do" que echo muestre el valor de la variable en cada repetición. Cualquiera de los tres valores puede ser una variable.

for /l %%i in (2 1 %potencia%) do (
set /a resultado=resultado * %base%
)

Esto nos puede servir para mostrar un resultado de "ir probando". Por ejemplo, a la hora de calcular una raíz, cada repetición irá aumentando uno hasta que "If" coincida con la fórmula de la raíz cuadrada. Esto es muy cómodo, ocupa mucho menos espacio y muestra los resultados más precisos, pero es más complicado.

FOR %%x in (x*) DO echo %%x

Esto mostrará todos los archivos que empiecen por X.

Hay dos modificadores más.

FOR /D %%x in (m*) DO echo %%x

Con /d mostrará solo los directorios que empiecen con M.

Y el más importante y complejo, el modificador /f.

El conjunto puede contener
Conjunto de archivos > sin comillas
Cadena de caracteres > con comillas dobles [ " " ]
Comando •> con comilla simple [ ' ' ]

OPCIONES

• Eol -> Todo lo que esté después de éste carácter (especificado con eol) será ignorado (para cada línea)

• Skip -> Es el número de líneas a saltarse al principio de un archivo o comando.

• Delims -> Delims nos sirve para separar cadenas, si no se coloca esta opción, se usarán como separadores "espacio" y "tab."

• Tokens -> Con tokens especificamos qué segmentos (palabras), delimitados por "delims", serán pasados a las variables... por ejemplo:

1, 2, 3
Solo pasará los primeros 3 segmentos.

1,2*
Pasa 2 segmentos, el primero y todo lo que este después (el * regresa todo el resto de la línea)

1,2,3-7.8.9-14,16*
Pasará los tres primeros segmentos, luego saltará al séptimo, seguirá has el noveno. Luego saltará al 14, salta al dieciséis hasta que se acaben los segmentos.

• Usebackq ->Cambia la forma de interpretar si es string o comando.

Pueden combinarse dos o más atributos para /f.

FOR /F "tokens=1,2-4,8,9,10*" %%a IN ("Con for f tokens podemos delimitar como palabra varias palabras y mostrarlas como variables consecutivas") DO echo %%a %%b %%d %%e %%f %%g %%h
Esta línea dará como resultado lo siguiente:

Con for tokens palabra varias palabras y mostrarlas como variables consecutivas

Podemos, por tanto, elegir qué palabras mostrar. Ahí va un ejercicio, utilizando FOR, haced un buscador de archivos  (El usuario ha de elegir la palabra o palabras que quiere buscar, utilizad set /p, y esa variable será lo que for tenga que buscar.)

Aquí os dejo algunos códigos parecidos.

::Saber las líneas de un archivo by PyXOLo
@echo off
:contador
set /p archivo=RUTA=
set cuenta=0
for /f %%x in (%archivo%) do set /a cuenta=1+cuenta
set funcion=%cuenta%
echo %funcion%
pause>nul




::Extraer la IP privada de tu ordenador en una variable por PyXOLo
@echo off
For /f "tokens=14 skip=5" %%x IN ('ipconfig') Do set ip=%%x
echo %ip%
pause>nul
goto EOF

::Sacar la ruta de un proceso (by RockoX)
@echo off
rem Sacando la ruta de un ejecutable activo.   
(cd %homedrive%\)
:Code
(cls)
(set /p proceso=Nombre de proceso : )
(if not defined proceso (goto:Code))
for /f "tokens=*" %%x in ('wmic process get executablepath ^| find /i "%proceso%"') do (set ruta=%%x)
(echo %ruta%)
(pause>nul)
(goto:eof)

También hay más tipos de for, como for /r, esto hará una lista de archivos de la ruta:
For /r C:windows %a in (Set) do Echo %a   .... Pero volvemos al for f tokens.
Esto nos viene muy bien, por ejemplo, si queremos tomar una pregunta de un txt.
:buscarnumero
set num=0
set /a num=%random% %% 100
if %num% geq 2 (if %num% leq 100 (goto :sig))
goto :buscarnumero
:sig
set /a nume=%num%-1
set a=0
for /f "skip=%nume% delims=" %%a in ('type "Preguntas.txt"') do (
if !a!==0 (
set preg=%%a
set a=1))
set b=0
for /f "skip=%nume% delims=" %%a in ('type "Respuestas.txt"') do (
if !b!==0 (
set rta=%%n
set b=1))
echo %preg%
If "%resp%"=="%rta%" (goto bien) else (goto mal)

Con esto tomará un número aleatorio entre 0 y 100, restamos uno para que se salte una línea menos, y de ahí tomamos el valor en el archivo preguntas.txt, haceos lo mismo con las respuestas, mostramos la pregunta, si la respuesta escrita por el usuario coincide con la tomada del archivo, irá a bien. Analizad este código.


Espero que te haya servido.
#4
Programación C/C++ / Re: Problema con For en C.
8 Diciembre 2010, 17:56 PM
¡La leche! Funciona, gracias. Nop sé si lo he pillado bien ¿
Sólo se puede usar a partir de la "i" en for?. Bueno, es igual. Lod el reslt era una errata. Gracias por resolver mi duda.
#5
Programación C/C++ / Problema con For en C.
8 Diciembre 2010, 17:16 PM
Hola chicos, estoy empezando con C, C normal. Quiero hacer un mini programa que calcule potencias utilizando un bucle for. Ya sé que hay comandos en otras bibliotecas pero es que ahora quiero hacerlo con for. Tengo un código como este.

#include <stdio.h>
#include <conio.h>

int main() {
   int base, exp;
   printf("Escriba la base:  ");
   scanf ("%i", &base);
   printf ("\nEscriba el exponente: ");
   scanf ("%i", &exp);
   printf ("Elevamos %i a la %i¦ potencia\n", base, exp);

   int cnt = 1;
   int res;
   int reslt;

   for ( res=2 ; cnt==exp ; res++, cnt++ )
   {
   res = res * base;
   }
   printf ("El resultado es %i.", res);
   return 0;
}


¿Por qué no me da la respuesta correcta? Cuando elevo 2² o 2³ me sale que el resultado es 2. ¿Dónde está el fallo? Muchas gracias.
#6
¿Sacar esas letras?

Simplemente puedes poner las 25 letras en un txt y pedir que for tome cada línea con for /f skip=%var%, vas sumando una a var hasta que el valor sea 25.

If %var% GEQ 26 ()

tendrías que definir tre svariables:

%1% (1ª letra)
%2% (2ª letra)
%3% (3ª letra)

y hacer algo como

%1%=1
%2%=1
%3%=1
:Bucle
Set /a 3=%3%+1
If %3% GEQ 26 (
[lo mismo con %2% + 1]

etc...


#7
No hombre, pero podrías llamar a la carpeta como te diera la gana.

El ejemplo sería.

Combinación "PDF"
Si entre los archivos a copiar hay alguno "*.pdf"

copiarlo a "C:~ .../Escritorio/Documentos/%1.pdf

Algo así. Se puede hacer así en poco más de diez líneas.
#8
No, creo que el que no se ah explicado he sido yo.


Podrías hacer algo como:

"siguiente combinación: PDF"

Si hay archivos .PDF

Crear carpeta   "PDF"

Copiar archivos ".PDF" a carpeta "PDF".

Y si no hay  archivos PDF, siguiente combinación. Algo así.

No me apetece pensar demasiado pero sería algo como crear un archivo TXT con las 25 letras básicas del alfabeto occidental y que for probase con una cada vez.

A A A
A A B
A A C
...
A B A
A B B
........
Z Z Z

y con eso pones

If exist *.%a (
MD %a
Copy *.%a %homedrive%/Docume~1/%Username%/Escritorio/%a
)

Algo así.
#9
EL código es demasiado extenso. Lo primero, no ponags un salto de líena entre cda comando:

echo.

echo.

Pon directamente

echo.
echo.

Y en lugar de poner una línea de comandos para cada tipo de archivo (que hay miles), pon un bucle que vaya probando combinaciones de tres letras

aaa, aab, aac, hasta zzz.

Defines la variable de for (las tres letras) como el nombre de la variable que usarás para poner nombre a la carpet,a te ahorrarás muchas líneas, pero para no crear 20 mil carpetas, usa if exist, para que solo cree las carpetas si hay archivos con dicha extensión.
#10
Está bastante bien para los que no tienen ni idea de C. Muy buen artículo.