Ayuda el programa ignora el ELSE Topic is solved

Esta sección es para preguntas sobre programación/scripting usando AutoHotkey.

Moderator: Flipeador

Jamjize
Posts: 6
Joined: 16 Apr 2017, 05:17

Ayuda el programa ignora el ELSE

13 Feb 2020, 15:38

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.
Attachments
Sin título.jpg
Sin título.jpg (9.29 KiB) Viewed 2531 times
Last edited by Jamjize on 13 Feb 2020, 16:12, edited 3 times in total.
User avatar
Yakshongas
Posts: 478
Joined: 21 Jan 2020, 08:41
Facebook: Yakshongas

Re:

13 Feb 2020, 15:49

Si no te es problema podrías enviar el resto del script para poder ayudarte mejor?
Please mark your topics as solved if you don't need any further help. ✅
Jamjize
Posts: 6
Joined: 16 Apr 2017, 05:17

Re: Re:

13 Feb 2020, 15:53

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
User avatar
Yakshongas
Posts: 478
Joined: 21 Jan 2020, 08:41
Facebook: Yakshongas

Re: Ayuda con trozo de código ELSE

13 Feb 2020, 16:28

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
	}
Please mark your topics as solved if you don't need any further help. ✅
Jamjize
Posts: 6
Joined: 16 Apr 2017, 05:17

Re: Ayuda el programa ignora el ELSE

13 Feb 2020, 16:39

@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
User avatar
Yakshongas
Posts: 478
Joined: 21 Jan 2020, 08:41
Facebook: Yakshongas

Re: Ayuda el programa ignora el ELSE  Topic is solved

13 Feb 2020, 16:58

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%
	}
Please mark your topics as solved if you don't need any further help. ✅
Jamjize
Posts: 6
Joined: 16 Apr 2017, 05:17

Re: Ayuda el programa ignora el ELSE

13 Feb 2020, 17:15

@Yakshongas
Perfecto! muchas gracias! aprendí mucho, muchas muchas gracias
devnullsp
Posts: 73
Joined: 21 Nov 2017, 09:00

Re: Ayuda el programa ignora el ELSE

19 Mar 2020, 07:50

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

Return to “Pedir Ayuda”

Who is online

Users browsing this forum: No registered users and 8 guests