Page 1 of 1

Ayuda el programa ignora el ELSE

Posted: 13 Feb 2020, 15:38
by Jamjize
Hola disculpen las molestias, alguien me puede ayudar?, no entiendo por qué no pasa por la parte del "else". Por cierto es parte de una GUI

Code: Select all


; Generated by AutoGUI 2.6.2
#SingleInstance Force
#NoEnv
SetWorkingDir %A_ScriptDir%
SetBatchLines -1

Gui Add, Text, x53 y5 w185 h23 +0x200, Ingresa el nombre de tu nueva carpeta
Gui Add, Edit, vNombreCarpeta gTB_NombreCarpeta x10 y30 w272 h21, Ej: Mis projectos
Gui Add, Button, gBtn_Aceptar x48 y54 w65 h23, Aceptar
Gui Add, Button, gBtn_Cancelar x179 y54 w65 h23, Cancelar

Gui Show, w292 h78, Crear una nueva carpeta
Return

TB_NombreCarpeta:
	if (%vNombreCarpeta% = ""){
		Vacio = true
	}
	else
	{
		Vacio = false
	}
	return

Btn_Aceptar:
	MsgBox, %Vacio%
Return

Btn_Cancelar:
Return

GuiEscape:
GuiClose:
ExitApp

Si dejo vacio, al tocar el boton "aceptar" imprime: true. Pero si le escribo algo, el mensaje aparece vacio, sin nada, en vez de "false" y probe con otras palabras y tampoco, da igual si imprime string o buleano, no pasa por el "else" solo por el if. Soy nuevo en el lenguaje y no entiendo que hago mal.

Re:

Posted: 13 Feb 2020, 15:49
by Yakshongas
Si no te es problema podrías enviar el resto del script para poder ayudarte mejor?

Re: Re:

Posted: 13 Feb 2020, 15:53
by Jamjize
Yakshongas wrote:
13 Feb 2020, 15:49
Si no te es problema podrías enviar el resto del script para poder ayudarte mejor?
Si ahí lo edito

Re: Ayuda con trozo de código ELSE

Posted: 13 Feb 2020, 16:28
by Yakshongas
No estoy seguro del todo de lo que quieres pero si eres nuevo te recomiendo que empieces primero usando InputBox ya que es más fácil de manejar.

Code: Select all

#SingleInstance Force
#Noenv
SetWorkingDir %A_ScriptDir%
SetBatchLines -1

Inputs:
InputBox, texto, Crear una nueva carpeta, Nombre de la carpeta,, 310, 135,,, Locale,, Ej. Mis proyectos
	if (Texto="")
	{
		MsgBox, True
		goto, Inputs
	}
	else if (ErrorLevel=1)
	{
		return
	}
	else
	{
		MsgBox, False
		goto, Inputs
	}

Re: Ayuda el programa ignora el ELSE

Posted: 13 Feb 2020, 16:39
by Jamjize
@Yakshongas
Si, quiero controlar que si se deja el campo vacio, no haga nada, caso contrario, cree una carpeta nueva, con el texto ingresado. Y que el boton "aceptar" sea el que controle eso

Re: Ayuda el programa ignora el ELSE  Topic is solved

Posted: 13 Feb 2020, 16:58
by Yakshongas
Entonces creeo que esto es lo que buscas

Code: Select all

#SingleInstance Force
#Noenv
SetBatchLines -1

Inputs:
InputBox, texto, Crear una nueva carpeta, Nombre de la carpeta,, 310, 135,,, Locale,, Ej. Mis proyectos
	if (texto="")
	{
		MsgBox, Pon un nombre para la carpeta.
		goto, Inputs
	}
	else if (ErrorLevel=1)
	{
		return
	}
	else
	{
		FileSelectFolder, destino
		FileCreateDir, %destino%\%texto%
	}

Re: Ayuda el programa ignora el ELSE

Posted: 13 Feb 2020, 17:15
by Jamjize
@Yakshongas
Perfecto! muchas gracias! aprendí mucho, muchas muchas gracias

Re: Ayuda el programa ignora el ELSE

Posted: 19 Mar 2020, 07:50
by devnullsp
Se que te han respondido pero si tienes curiosidad de cómo seria te pego aquí tu código con algún arreglillo

Pero comentarte que hay un par de errores (y muy comúnes):

1.- vNombreCarpeta es realmente luego NombreCarpeta hay que quitarle la v ya que eso es el indicador de variable y no pertenece al nombre de la variable donde almacena el valor.
2.- nombreCarpeta tendrá valor cuando se haga Gui Submit, ya que es cuando se mueven los valores de la pantalla a su variable de almacenamiento. O sea nombreCarpeta NO, y NO! está "conectado" al campo de entrada, es una definición de a donde hay que copiar el dato cuando se realice el "submit"

Por ello lo que te ocurre por lo que no se ejecuta el else es que %vNombreCarpteta% siempre es = "", ya que dicha variable NO existe y por lo tanto se inicializa a blanco.

Si lo que quieres es comprobar el blanco y no dejar continuar es muy facil:

He quitado la función que se activa al cambiar el campo y su definición g

Code: Select all

#NoEnv
Gui Add, Text, x53 y5 w185 h23 +0x200, Ingresa el nombre de tu nueva carpeta
Gui Add, Edit, vNombreCarpeta x10 y30 w272 h21, Ej: Mis projectos
Gui Add, Button, gBtn_Aceptar x48 y54 w65 h23, Aceptar
Gui Add, Button, gBtn_Cancelar x179 y54 w65 h23, Cancelar
Gui Show, w292 h78, Crear una nueva carpeta
Return

Btn_Aceptar:
	Gui Submit, nohide
	if NombreCarpeta = ""
		return
	; por supuesto puedes tener un campo de alerta para poner el error o 
	; una barra de estado, etc etc....
	;... hacer lo que sea necesario
	; si tienes finalmente que cerrar la ventana puedes usar un subcomando del gui (mira en la documentacion del gui destroy)
Return

Btn_Cancelar:
Return

GuiEscape:
GuiClose:
ExitApp