|
Título: es posible...? (Consola) Publicado por: WestOn en 18 Octubre 2008, 11:02 am wenas, toy creando una consola y se me ocurrio empezar a añadirle ya comandos.
Mi pregunta es como puedo hacer esto: Comando: RD /S /Q, bien al poner eso en la consola no soy capaz de hacer que interprete los modificadores /S /Q y encima tampoco reconoce RD ya que despues hay mas palabras. mi idea esque cada vez que haya un espacio la palabra que siga sea una variable(ahora mismo lo tengo todo en una variable): A=ConsoleReadLine asi es como funciona, y entonces una vez hecho eso ¿como puedo hacer que reconozca los espacios? EJ: Código: Clean _ /e _ /r (comandos fantasiosos) _ = espacio Por cada espacio seguido de una letra que lo identifique como una variable.. espero que se haya entendido...un saludo y grax de antemano Título: Re: es posible...? Publicado por: aaronduran2 en 18 Octubre 2008, 12:51 pm Utiliza la función Split para separar el comando de los argumentos.
Saludos. Título: Re: es posible...? Publicado por: Spider-Net en 18 Octubre 2008, 12:52 pm Con la función Split.
Código
Saludos! aaronduran2 ha posteado mientras lo hacia yo, pero bueno ya te dejo el ejemplo Título: Re: es posible...? Publicado por: WestOn en 18 Octubre 2008, 13:59 pm grax!! :laugh: voy a probarlo yaaaa ;D
Título: Re: es posible...? Publicado por: WestOn en 18 Octubre 2008, 14:37 pm No entiendo bien el code :(, lo he intentado poner en un form nuevo para probarlo pero me saltan errores.
si puedes poner un ejemplo mas explicado o algo asi...:xD un saludo y grax ;D PD:cuando poneis un code sale con colores y muy bonito, ¿como lo haceis xD?(los q pongo yo noo :¬¬) ;) Título: Re: es posible...? Publicado por: aaronduran2 en 18 Octubre 2008, 14:49 pm Imagínate que tienes una variable con el texto "Hola /a /b /c".
Pues para separarlo utilizas Split, de forma que quedaría así: Código
Es lo mismo que puso Spider-Net. El error posiblemente se deba a que tienes Option Explicit y no se declara la variable i. Para poner el código coloreado, utiliza las etiquetas GeSHi. Cuando posteas algo, arriba a la derecha tienes un menú desplegable que te permite añadir las etiquetas para los diferentes lenguajes. Saludos. Título: Re: es posible...? Publicado por: WestOn en 18 Octubre 2008, 15:02 pm Grax a los dos ;), ok lo he puesto y me detecta el primer argumento clear, pero al poner en la consola clear /q /u no me salta el mensaje, sera porq teng que declarar los parametros no?
xD donde los declaro¿? Código asi es como detecta la consola los comandos que pongo, esta bien asi o creeis que hay mejores formas XD? un saludo Título: Re: es posible...? Publicado por: cassiani en 18 Octubre 2008, 15:29 pm Bueno amigo, la cadena "clear" es diferente de la cadena "clear /q /u", en este caso lo que puedes hacer es buscar la cadena "clear" dentro de la cadena que recibes "Instr".
Y te sale hacer uso de "UBound". Saludos!! Título: Re: es posible...? Publicado por: WestOn en 18 Octubre 2008, 16:20 pm wenas, ya se q es diferente ajaja :xD :xD , voy a hacer eso q has dicho de buscar la palabra dentro de la cadena y una vez encontrado que busque los modificadores ;) es buena
por ciero lo de "UBound" lo he buscado en el vb y no me sale ninguna referencia un saludo Título: Re: es posible...? Publicado por: WestOn en 18 Octubre 2008, 17:26 pm wenas de nuevo, he estado mirando y no tengo nada para buscar palabras (me sonaba que tenia alguna funcion en un modulo...) pero nose si no la tengo o esta perdida por alguna parte :-\
alguien tiene algo a mano? un saludo Título: Re: es posible...? Publicado por: Spider-Net en 18 Octubre 2008, 18:03 pm :huh: :huh: :huh: :huh: :huh:
InStr Título: Re: es posible...? Publicado por: WestOn en 18 Octubre 2008, 18:32 pm wenas, ya Spider-Net pero nunca he usado la funcion que has puesto, y he estado mirando la msdn online pero no soy capaz de hacerlo funcionar en la consola..
ttp://msdn.microsoft.com/es-es/library/8460tsh1(VS.80).aspx (http://ttp://msdn.microsoft.com/es-es/library/8460tsh1(VS.80).aspx) le falta una H al principio. si me pones un pequeño ejemplo (q no parecido el de la pag, q ademas no me funciona xDD) te lo agradeceria ;) bueno venga un saludo Título: Re: es posible...? Publicado por: seba123neo en 18 Octubre 2008, 18:48 pm Hola WestOn todas esas dudas Instr ,Ubound estan en un manual de visual basic...esa pagina es de visual basic .NET...digamos que es lo mismo..pero algunas funciones cambian y por eso es mejor mirar algo de visual basic 6...
saludos. Título: Re: es posible...? Publicado por: WestOn en 18 Octubre 2008, 19:05 pm ya decia yo :-X, ok voy a mirar el tuto del guille que seguro estaran esas funciones.. ahora cuando lo haga dejare un pequeño ejemplo por si alguien lo quiere
un saludoo Título: Re: es posible...? Publicado por: WestOn en 18 Octubre 2008, 19:37 pm wenas, haber he hecho este ejemplo bien sencillo pero me salta un error ("se esperaba =")
Código
si no entendi mal InStr lee desde el inicio la variable, busca la palabra 'clear', y la ultima opcion es para comparar texto, ¿que me falla? un saludo y grax de antemano Título: Re: es posible...? Publicado por: seba123neo en 18 Octubre 2008, 19:46 pm pues claro..el Instr se le tiene qeu pasar a una variable o lo tenes que comparar con un if o con un msgbox lo podes mostrar..no lo podes poner asi nomas...el Instr devuelve un integer ..si es 0 no encontro la palabra y si es desigual a 0 te devuelve la posicion en la que la cadena que buscaste se encuentra..mira:
Código
ahi te devuelve 33 qeu es la posicion de la palabra "Clear" que buscas...en vez de un msgbox podes poner una variable y hacer un if asi: Código
saludos. Título: Re: es posible...? Publicado por: WestOn en 18 Octubre 2008, 20:07 pm grax seba123neo, yo creo que ya con esto puedo seguir con lo de la consola ;D
un saludo Título: Re: es posible...? Publicado por: WestOn en 18 Octubre 2008, 21:16 pm Wenas, aqui esta este ejemplo q funciona :xD, poner 1 commandbotton & un text :
Código el problema esque no es capaz de reconocer el comando /q solo, ¿alguna idea? saludoss Título: Re: es posible...? (Consola) Publicado por: Spider-Net en 18 Octubre 2008, 22:15 pm ¿Pero por qué no usas el split que es mucho más fácil? Y un consejo compañero, acostúmbrate a tabular (indentar) tu código porque es más fácil de comprender:
A ver, un ejemplo: Código
Título: Re: es posible...? (Consola) Publicado por: WestOn en 18 Octubre 2008, 22:29 pm wenas, esque lo del split tampoco lo he usado nunca y tenia que mirar tambien lo del InStr... :P
Lo de identar el code me ha sido imposible...(tenia otra idea en la cabeza, primer post) pero lo q vosotros decis esq esta mejor, voy a probar el ejemplo grax Spider-Net Título: Re: es posible...? (Consola) Publicado por: Spider-Net en 18 Octubre 2008, 22:33 pm wenas, esque lo del split tampoco lo he usado nunca y tenia que mirar tambien lo del InStr... :P Lo de identar el code me ha sido imposible...(tenia otra idea en la cabeza, primer post) pero lo q vosotros decis esq esta mejor, voy a probar el ejemplo grax Spider-Net Identar es tabularlo, sólo poner tabuladores para saber que instrucciones se ejecutan dentro de cada procedimiento. Saludos Título: Re: es posible...? (Consola) Publicado por: WestOn en 18 Octubre 2008, 22:53 pm aaaaaa :laugh:...pensaba q decias idear,crear o algo asi
Esta perfecto el code ::) Un saludo ;D Título: Re: es posible...? (Consola) Publicado por: cassiani en 19 Octubre 2008, 01:10 am Como ya te dijeron, léete un manual básico sobre todo el manejo de cadenas (que te hace mucha falta) o caerás acá preguntando lo mismo una y otra vez.
Para lo que hacías, yo lo haría así: Código
Y hay, más case para más parámetros y dentro de los case las rutinas o funciones que se requieran. http://www.elguille.info/vb/vb6/stringFunctions.htm (http://www.elguille.info/vb/vb6/stringFunctions.htm) http://www.recursosvisualbasic.com.ar/htm/tutoriales/tutorial-basico5.htm (http://www.recursosvisualbasic.com.ar/htm/tutoriales/tutorial-basico5.htm) saludos!! Título: Re: es posible...? (Consola) Publicado por: Spider-Net en 19 Octubre 2008, 12:11 pm El ejemplo de cΔssiΔnі está mucho mejor que el mío. Además usó la función Trim para eliminar posibles espacios al final o al principio del comando introducidos por error.Así que te recomiendo que uses su ejemplo.
Un saludo! Título: Re: es posible...? (Consola) Publicado por: WestOn en 19 Octubre 2008, 13:35 pm wenas, esta bien el code, voy a ver como lo uso en el proyecto y cuando termine cuelgo el proyecto para que le echeis una ojeada (ya q el 'motor' del exe es vuestro ajajaj) aver si no tengo mas contratiempos y lo posteo hoy. un saludo y grax ;)
PD:los enlaces son bastante buenos (el de recursosvisualbasic no lo conocia) Título: Re: es posible...? (Consola) Publicado por: WestOn en 20 Octubre 2008, 08:49 am Wenas, estuve cambiando el motor del proyecto por esto:
Esto es para que cambie la variable a 1 (todas estan en 0 desde el principio) y la que este en 1 se abre: Código
Hasta ahi todo perfecto(si se pone solo no funciona bien xDD) pero si dentro del if ponemos lo que puso cΔssiΔnі funciona mejor!! pero algo esta mal y solo detecta el comando solo (clean, jo) los modificadores no: Código
haber si se me ha entendido.. :laugh: un saludo y grax de antemano Título: Re: es posible...? (Consola) Publicado por: Spider-Net en 20 Octubre 2008, 12:25 pm De entrada, muchas gracias por NO hacerme caso con lo de indentar tu código :¬¬, ya te lamentarás cuando programes códigos largos... en fin.
Estás muy perdido. Así en principio, deberías de leerte un manual de Visual Basic antes de intentar cosas más complicadas, porque te damos cosas hechas y que funcionan y te las cargas. xD De entrada, no sé para que quieres esta parte del código: Código
¿Para saber si está clean?. Eso ya lo hace tanto el código de cΔssiΔnі como el mío. Comprueban si existe el comando clean con if o con select case pero ambos lo comprueban, no necesitas ningún if antes. Y esto ya... Código
¿Pero qué lío has hecho ahí?. ¿Un msgbox para cada resultado? Por qué modificas el código de cΔssiΔnі si funcionaba bien? Código
El Msgbox sResultado va sólo al final, no uno por cada case, el case lo que hace es ir añadiendo los parámetros si se los encuentra y sino no añade nada, no tienes que poner un msgbox por cada case. Eso sobra. Case "clean": sResultado = sResultado & sCacho(i) & " " MsgBox "indicar parametro" Y eso tampoco tengo idea para que lo has puesto. Si ese case lo que hace es si encuentra la cadena clean la almacena en sResultado, sobra ahí msgbox, igual que todos los demás, un msgbox al final y listo. Por último decirte que no pegues todo el código, queda mucho más claro tabulado y con saltos de línea para separar algunas cosas tal y como lo tenemos cΔssiΔnі y yo. Así como tú lo pones no sé si es que lo ves más claro, pero lo que haces es hacerlo más ilegible. Quitando todo lo que tú pones y dejando sólo y exclusivamente lo de cΔssiΔnі el código funciona perfectamente. Así que no lo modifiques mejor. Y sobre todo intenta leer y aprender a programar en Visual Basic antes de meterte en proyectos que te vienen grandes, es sólo un consejo. Saludos! Título: Re: es posible...? (Consola) Publicado por: WestOn en 20 Octubre 2008, 14:40 pm wenas, lo he tabulado un poco(lo tabulare mas el proximo ;)), me dejado alguna cosa porq pense que se entenderia, error mio :rolleyes:.La idea esta pues era porque con un code esta bien, pero ya cuando pongo mas de diez me parece un poco abultado y me lio yo solo con tanto code, de todas formas voy a usar lo de cΔssiΔnі y pondre todos los code dentro.
Lo de los mensajes lo puse por poner algo (en vez de poner consolewrite puse msgbox para que os fuera mas facil :P) y no me cargo el code jajaja pero no funciona cuando hago eso :xD va es broma, venga un saludo y grax PD:Lo modifique porq la variable era a, entonces sCadena sobraba no?(aver si toy metiendo la pata..) y luego lo de Trim$ a mas de lo mismo. A bueno y lo de split tambien puse a. enfin a sido una rayada mia xD Título: Re: es posible...? (Consola) Publicado por: WestOn en 21 Octubre 2008, 14:06 pm Wenas, tengo un problema con la consola, os cuento:
Cuando estoy con la consola ejecutandose, si escribo mas de 9 caracteres en la misma linea y presiono enter, se salta 1 linea(por darle a enter) + otra linea(por superar 9 caracteres)... Nose si se me ha entendido bien, en ese caso decirmelo y posteo alguna foto voy a seguir mirando aver si lo arreglo. PD:Bueno ya que estoy con este post comento: Ya una vez solucionado ese problema lo he aumentado para que acepte como maximo 1000 (pero en realidad son 999 xD), pues bueno tengo ya 999 caracteres para pegarlos y probarlo, pero jeje q sorpresa que no vale usar el Control+V para pegarlos, y escribirlos es muy pesado ajajaj :laugh:, ¿como puedo añadir en la consola la opcion de pegar y copiar? un saludo ;) |