Problema al comparar cadenas

Pregunta Sin Miedo no te cortes cualquier cosa para empezar - Autoit se comienza facilmente.Para Ordenes o Comandos sueltos. Ver nota como preguntar.
Responder
Avatar de Usuario
yasmany
Hacker del Foro
Mensajes: 249
Registrado: 06 Sep 2011, 21:30

Problema al comparar cadenas

Mensaje por yasmany »

Hola a todos, de nuevo tengo inconvenientes... espero no lo pasen por alto
He estado intentando todo el día, pero no lo he logrado, en el codigo especifico mi problema

Código: Seleccionar todo

;ESPECIFICACION
	;La variable $lista corresponde al listview creado el cual posee una serie de datos
	; dato1|dato2|dato3
	; dato1|dato2|dato3
	For $i = 0 To _GUICtrlListView_GetItemCount($lista) - 1
		If _GUICtrlListView_GetItemChecked($lista, $i) Then ; identifica los items chekeados

			$ruta = _GUICtrlListView_GetItemText($lista, $i) ; muestra el primer texto del item
			$descripcion = _GUICtrlListView_GetItemText($lista, $i, 1); muestra el  texto del subItem 

			If ($descripcion = "Dato a comparar") Then ; comparo si el texto del subItem es como el comparado - PERO NO COMPARA
				ConsoleWrite($ruta & @CRLF); si lo es, muestro un mensaje -  PERO NO SALE
			EndIf
		EndIf
	Next
Espero sepan ayudarme, desde yá muchas gracias.
Obra de modo que merezcas a tu propio juicio y a juicio de los demás la eternidad, que te hagas insustituible que no merezcas morir.
https://www.facebook.com/yasmanycurimilma
Avatar de Usuario
Dany
Profesional del Autoit
Mensajes: 651
Registrado: 28 Mar 2012, 22:49

Re: Problema al comparar cadenas

Mensaje por Dany »

no entendí nada :S
  • ............................................Imagen
    ......................................Imagen
Avatar de Usuario
Dany
Profesional del Autoit
Mensajes: 651
Registrado: 28 Mar 2012, 22:49

Re: Problema al comparar cadenas

Mensaje por Dany »

Te refieres a esto:

Código: Seleccionar todo

#NoTrayIcon
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_Icon=icono.ico
#AutoIt3Wrapper_Outfile=Avy.exe
#AutoIt3Wrapper_Compression=4
#AutoIt3Wrapper_Compile_Both=y
#AutoIt3Wrapper_UseX64=y
#AutoIt3Wrapper_Res_Comment=Software gratuito [email protected]
#AutoIt3Wrapper_Res_Description=Avy
#AutoIt3Wrapper_Res_Fileversion=1.0.0.0
#AutoIt3Wrapper_Res_LegalCopyright=Yasmany Curimilma
#AutoIt3Wrapper_Res_Language=1034
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****

#include <EditConstants.au3>
#include <GDIPlus.au3>
#include <ButtonConstants.au3>
#include <ComboConstants.au3>
#include <GUIComboBox.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <Constants.au3>
#include <GuiConstantsEx.au3>
#include <UpdownConstants.au3>
#include <GuiTab.au3>
#include <GuiListView.au3>
#include <EditConstants.au3>
#include <GuiButton.au3>
#include <Misc.au3>
#include <GUIListBox.au3>
#include <ProgressConstants.au3>
#include <StaticConstants.au3>
#include <ListviewConstants.au3>


_Singleton("AVY1991") ; NO REPETIR INSTANCIA DE EJECUCION junto con  #include <Misc.au3>
Global $btnDesinfectar, $unidad, $ed
Dim $aArray[21], $Array[4]



; GUI
$interfaz = GUICreate("Avy", 620, 405, -1, -1, -1, $ws_ex_acceptfiles)
;~ $interfaz = GUICreate("Avy", 620, 405, -1, -1,$WS_OVERLAPPEDWINDOW, BitOR($WS_EX_CONTROLPARENT,-1) , $ws_ex_acceptfiles)
GUICtrlCreatePic(@AppDataDir & "\banner.jpg", 0, 0, 620, 50)

$iconointerfaz = GUISetIcon("icono.ico", 0)
$ch_desplazar = GUICtrlCreateCheckbox("Desplazar lista", 15, 355, 100, 25)
GUICtrlSetState(-1, $GUI_CHECKED)
$ch_aplicaciones = GUICtrlCreateCheckbox("Eliminar Aplicaciones", 120, 355, 120, 25)
GUICtrlSetState($ch_aplicaciones, $GUI_HIDE)

;MENUS
$menuArchivo = GUICtrlCreateMenu("&Archivo")
$menuAbrirUnidad = GUICtrlCreateMenuItem("Abrir unidad", $menuArchivo)

;GUICtrlSetState(-1, $GUI_DEFBUTTON);PARA PONERLO EN NEGRITA
$menuCerrar = GUICtrlCreateMenuItem("Cerrar programa", $menuArchivo)

$menuInformacion = GUICtrlCreateMenu("&Informacion")
$menuOpcionesSistema = GUICtrlCreateMenu("&Windows", $menuInformacion)
$menuHerramientasTipoSistema = GUICtrlCreateMenuItem("Version", $menuOpcionesSistema)
$menuHerramientasDetalles = GUICtrlCreateMenuItem("Detalles", $menuOpcionesSistema)
$menuInformacionAcercaAvy = GUICtrlCreateMenuItem("Acerca de Avy", $menuInformacion)

;BOTONES
$btnAnalizar = GUICtrlCreateButton("&Analizar", 369, 355, 60, 25)
GUICtrlSetTip($btnAnalizar, "Analizar unidad seleccionada")

$btnDesinfectar = GUICtrlCreateButton("&Desinfectar", 429, 355, 120, 25)
GUICtrlSetTip(-1, "Analize y desinfecte la unidad")

$btnSalir = GUICtrlCreateButton("&Salir", 550, 355, 60, 25)
GUICtrlSetTip(-1, "Cerrar programa")

;ETIQUETAS DE INFORMACION
$lblNombre = GUICtrlCreateLabel("", 278, 75, 80, 15)
$lblSerial = GUICtrlCreateLabel("", 278, 90, 75, 15)
$lblSize = GUICtrlCreateLabel("", 410, 75, 185, 15)
$lblTipo = GUICtrlCreateLabel("", 410, 90, 185, 15)

GUICtrlCreateLabel("Nombre:", 235, 75, 40, 15)
GUICtrlCreateLabel("Serial:", 235, 90, 40, 15)
GUICtrlCreateLabel("Tamaño:", 365, 75, 43, 15)
GUICtrlCreateLabel("Tipo:", 365, 90, 23, 15)

;UNIDADES
$cbUnidades = GUICtrlCreateCombo("BUSCAR UNIDAD...", 10, 60, 193, 25, BitOR($CBS_DROPDOWNLIST, $CBS_AUTOHSCROLL, $CBS_UPPERCASE))
GUICtrlSetColor($cbUnidades, 0xff0000)


GUICtrlSetState($cbUnidades, $GUI_FOCUS)
$gruposucesos = GUICtrlCreateGroup("Informacion de unidad", 230, 55, 375, 60)
GUICtrlSetFont(-1, 9, 600, 0, "MS Serif")
;boton_prueba
$btn_actualizar = GUICtrlCreateButton("+", 205, 59, 17, 22)
GUICtrlSetTip($btn_actualizar, "Actualizar lista de unidades", "Avy", 1)

;///////////////////
; TAB ITEMS
;//////////////////////

;REGISTRO DE SUCESO ****************************************
$tab = GUICtrlCreateTab(10, 100, 600, 250, $WS_MAXIMIZEBOX, $WS_EX_APPWINDOW)
$itemRegistroDeSucesos = GUICtrlCreateTabItem("Registro de sucesos")
$gruposucesos = GUICtrlCreateGroup("Detalles", 15, 130, 590, 215)
GUICtrlSetState(-1, $GUI_SHOW); Mostrando la información detallada
$lista = GUICtrlCreateListView("Deteccion |Tipo |Estado ", 18, 150, 575, 190, -1, BitOR($LVS_EX_CHECKBOXES, $LVS_EX_FULLROWSELECT));;
_GUICtrlListView_SetColumnWidth($lista, 0, 300)
_GUICtrlListView_SetColumnWidth($lista, 1, 150)
_GUICtrlListView_SetColumnWidth($lista, 2, 100)
GUICtrlSetState($lista, $GUI_SHOW)

;SEGURIDAD
GUICtrlCreateTabItem("Seguridad")
GUICtrlCreateGroup("Ociones de seguridad", 15, 130, 580, 215)
$ch_proteger = GUICtrlCreateCheckbox("Proteger unidad y antivirus", 20, 180, 250, 15)
GUICtrlSetFont(-1, 9, 600, 0, "MS Serif")
$nota_ch_proteger = GUICtrlCreateLabel("Ningun virus modficará la carpeta creada...Ver Ayuda", 35, 200, 300, 20)
$ch_remover = GUICtrlCreateCheckbox("Remover proteccion portable del antivirus", 20, 180, 290, 15)
GUICtrlSetFont(-1, 9, 600, 0, "MS Serif")
GUICtrlSetState($ch_remover, $GUI_HIDE)

$btn_eliminar = GUICtrlCreateButton("X", 240, 305, 40, 25)
$font = "Comic Sans MS"
GUICtrlSetFont(-1, 9, 600, 4, $font) ; muestra caracteres
GUICtrlSetTip(-1, "Eliminar")

$label2 = GUICtrlCreateLabel("Arrastre en el recuadro carpeta/archivo q desea eliminar", 35, 290, 270, 15)
$input1 = GUICtrlCreateInput("", 35, 305, 200, 25, -1, BitOR($ES_right, $es_multiline));Bitor se utiliza en controles antecediendo un -1,BitOR
GUICtrlSetState(-1, $GUI_DROPACCEPTED) ; Para permitir arrastrar y soltar pero aplicando al crear la  GUI al final de la linea -1,$ws_ex_acceptfiles

$btnaplicar = GUICtrlCreateButton("Aplicar", 490, 300, 100, 40)

;AYUDA
$ayuda = GUICtrlCreateTabItem("Ayuda")

GUICtrlCreateListViewItem("abcdefg|hijklm|nopqrst", $lista)
GUICtrlCreateListViewItem("dfgvdfgxcv|hijklm|nopqrst", $lista)
GUICtrlCreateListViewItem("cxvcxbv|hijkddlm|nopqrst", $lista)
GUICtrlCreateListViewItem("213e3123|hijklm|nopqrst", $lista)
GUICtrlCreateListViewItem("abcdefg|hijkbbgblm|nopqrst", $lista)
GUICtrlCreateListViewItem("abcdefg|hijkdgvfglm|nopqrst", $lista)
GUICtrlCreateListViewItem("xcvsssxcv|hijdddklm|nopqrst", $lista)
GUICtrlCreateListViewItem("xcvfdt|vcbdfghf|cbfdsf", $lista)

;ESTADO DE LA GUI
GUISetState(@SW_SHOW)

;CASOS
While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg

		Case $GUI_EVENT_CLOSE
			If $nMsg = $GUI_EVENT_CLOSE Then
				Exit
			EndIf
		Case $btnAnalizar
			For $i = 0 To _GUICtrlListView_GetItemCount($lista) - 1
				If _GUICtrlListView_GetItemChecked($lista, $i) Then
					If _GUICtrlListView_GetItemText($lista, $i, 1) = "hijklm" Then
						ConsoleWrite(" son iguales =" & _GUICtrlListView_GetItemText($lista, $i, 1) & @CRLF)
					EndIf
				EndIf
			Next


	EndSwitch

WEnd

Saludos
  • ............................................Imagen
    ......................................Imagen
Avatar de Usuario
yasmany
Hacker del Foro
Mensajes: 249
Registrado: 06 Sep 2011, 21:30

Re: Problema al comparar cadenas

Mensaje por yasmany »

Gracias por tu ayuda y perdon por no aclararlo bien.
Este es el inconveniente, que al momento de Cliquear en [Desinfectar] me muestre en mensaje el primer texto, del subitem comparado.
Es decir que al momento de hacer clic en Desinfectar busque que items tienen el texto en el subItem de Acceso Directo y me muestre en mensaje.
Lo he intentado pero no muestra nada.
Espero comprendan, y me puedan ayudar, gracias.

Código: Seleccionar todo

#NoTrayIcon
#region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_Icon=icono.ico
#AutoIt3Wrapper_Outfile=Avy.exe
#AutoIt3Wrapper_Compression=4

#AutoIt3Wrapper_UseX64=y
#AutoIt3Wrapper_Res_Comment=Software gratuito [email protected]
#AutoIt3Wrapper_Res_Description=Avy
#AutoIt3Wrapper_Res_Fileversion=1.0.0.0
#AutoIt3Wrapper_Res_LegalCopyright=Yasmany Curimilma
#AutoIt3Wrapper_Res_Language=1034
#endregion ;**** Directives created by AutoIt3Wrapper_GUI ****

#include <EditConstants.au3>
#include <GDIPlus.au3>
#include <ButtonConstants.au3>
#include <ComboConstants.au3>
#include <GUIComboBox.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <Constants.au3>
#include <GuiConstantsEx.au3>
#include <UpdownConstants.au3>
#include <GuiTab.au3>
#include <GuiListView.au3>
#include <EditConstants.au3>
#include <GuiButton.au3>
#include <Misc.au3>
#include <GUIListBox.au3>
#include <ProgressConstants.au3>
#include <StaticConstants.au3>
#include <ListviewConstants.au3>


_Singleton("AVY1991") ; NO REPETIR INSTANCIA DE EJECUCION junto con  #include <Misc.au3>
Global $btnDesinfectar, $unidad, $ed
Dim $aArray[21], $Array[4]

; GUI
$interfaz = GUICreate("Avy", 620, 405, -1, -1, -1, $ws_ex_acceptfiles)
;~ $interfaz = GUICreate("Avy", 620, 405, -1, -1,$WS_OVERLAPPEDWINDOW, BitOR($WS_EX_CONTROLPARENT,-1) , $ws_ex_acceptfiles)
GUICtrlCreatePic(@AppDataDir & "\banner.jpg", 0, 0, 620, 50)

;BOTONES
$btnAnalizar = GUICtrlCreateButton("&Analizar", 369, 355, 60, 25)
GUICtrlSetTip($btnAnalizar, "Analizar unidad seleccionada")
$btnDesinfectar = GUICtrlCreateButton("&Desinfectar", 429, 355, 120, 25)
GUICtrlSetTip(-1, "Analize y desinfecte la unidad")

;///////////////////
; TAB ITEMS
;//////////////////////

;REGISTRO DE SUCESO ****************************************
$tab = GUICtrlCreateTab(10, 100, 600, 250, $WS_MAXIMIZEBOX, $WS_EX_APPWINDOW)
$itemRegistroDeSucesos = GUICtrlCreateTabItem("Registro de sucesos")
$gruposucesos = GUICtrlCreateGroup("Detalles", 15, 130, 590, 215)
GUICtrlSetState(-1, $GUI_SHOW); Mostrando la información detallada
$lista = GUICtrlCreateListView("Deteccion |Tipo |Estado ", 18, 150, 575, 190, -1, BitOR($LVS_EX_CHECKBOXES, $LVS_EX_FULLROWSELECT));;
GUICtrlSetState($lista, $GUI_SHOW)

GUICtrlCreateListViewItem("Dato1  |abcde   |nopqrst", $lista)
GUICtrlSetState(-1, $GUI_CHECKED)
GUICtrlCreateListViewItem("Dato2  |Acceso Directo|nopqrst", $lista)
GUICtrlSetState(-1, $GUI_CHECKED)
GUICtrlCreateListViewItem("Dato3  |mnopqr  |nopqrst", $lista)
GUICtrlSetState(-1, $GUI_CHECKED)
GUICtrlCreateListViewItem("Dato4  |stuvwxy |nopqrst", $lista)
GUICtrlSetState(-1, $GUI_CHECKED)
GUICtrlCreateListViewItem("Dato5  |Acceso Directo|nopqrst", $lista)
GUICtrlSetState(-1, $GUI_CHECKED)
GUICtrlCreateListViewItem("Dato6  |raw     |nopqrst", $lista)
GUICtrlCreateListViewItem("Dato7  |psd     |nopqrst", $lista)
GUICtrlSetState(-1, $GUI_CHECKED)
GUICtrlCreateListViewItem("Dato8  |exe     |cbfdsf", $lista)
GUICtrlSetState(-1, $GUI_CHECKED)

;ESTADO DE LA GUI
GUISetState(@SW_SHOW)

;CASOS
While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg

		Case $GUI_EVENT_CLOSE
			If $nMsg = $GUI_EVENT_CLOSE Then
				Exit
			EndIf
		Case $btnDesinfectar
			Desinfectar()
	EndSwitch
WEnd

Func Desinfectar()
	For $i = 0 To _GUICtrlListView_GetItemCount($lista) - 1
		If _GUICtrlListView_GetItemChecked($lista, $i) Then

			$ruta = _GUICtrlListView_GetItemText($lista, $i) ; obtengo el primer valor de la FILA del ListviewItem
			$descripcion = _GUICtrlListView_GetItemText($lista, $i, 1) ;

			If $descripcion = "Acceso Directo" Then
				MsgBox (64,"MENSAJE","El Acceso Directo es =" & $ruta & @CRLF)
			EndIf
		EndIf
	Next
EndFunc   ;==>Desinfectar
Obra de modo que merezcas a tu propio juicio y a juicio de los demás la eternidad, que te hagas insustituible que no merezcas morir.
https://www.facebook.com/yasmanycurimilma
Avatar de Usuario
Dany
Profesional del Autoit
Mensajes: 651
Registrado: 28 Mar 2012, 22:49

Re: Problema al comparar cadenas

Mensaje por Dany »

A mi me funciona bien.

seguro que presionas desinfectar?

porque me mostro dos mensaje diciendo que esta enda Dato2 y Dato5


Saludos
  • ............................................Imagen
    ......................................Imagen
Avatar de Usuario
yasmany
Hacker del Foro
Mensajes: 249
Registrado: 06 Sep 2011, 21:30

Re: Problema al comparar cadenas

Mensaje por yasmany »

LO HE SOLUCIONADO
Gracias Dany por tu ayuda, en si el problema es que estado comparando cadenas erroneas, es decir una de las cadenas tenia al final un espacio y no lo he notado, lo he eliminado al espacio y he realizado la comparación, el resultado ha sido el que esperaba. Gracias.
Mas de 5 horas intentandolo y el problema ha sido un espacio. que "torpe " que soy :smt021 jjj
Obra de modo que merezcas a tu propio juicio y a juicio de los demás la eternidad, que te hagas insustituible que no merezcas morir.
https://www.facebook.com/yasmanycurimilma
Avatar de Usuario
Dany
Profesional del Autoit
Mensajes: 651
Registrado: 28 Mar 2012, 22:49

Re: Problema al comparar cadenas

Mensaje por Dany »

Siempre pasa. :smt003


Saludos :smt027
  • ............................................Imagen
    ......................................Imagen
Avatar de Usuario
arkcrew
Profesional del Autoit
Mensajes: 506
Registrado: 28 Sep 2009, 19:17
Ubicación: Granada, España
Contactar:

Re: Problema al comparar cadenas

Mensaje por arkcrew »

Un consejo, cuando estéis comparando usad siempre un trim sobre los strings, porque encontrar un espacio en blanco a veces es un calvario.

Saludos
Avatar de Usuario
Dany
Profesional del Autoit
Mensajes: 651
Registrado: 28 Mar 2012, 22:49

Re: Problema al comparar cadenas

Mensaje por Dany »

arkcrew escribió:Un consejo, cuando estéis comparando usad siempre un trim sobre los strings, porque encontrar un espacio en blanco a veces es un calvario.

Saludos

mas bien StringStripWS

Saludos
  • ............................................Imagen
    ......................................Imagen
Avatar de Usuario
yasmany
Hacker del Foro
Mensajes: 249
Registrado: 06 Sep 2011, 21:30

Re: Problema al comparar cadenas

Mensaje por yasmany »

Gracias arkcrew, muy buena tu sugerencia al igual Dany, gracias por vuestro apoyo.
Obra de modo que merezcas a tu propio juicio y a juicio de los demás la eternidad, que te hagas insustituible que no merezcas morir.
https://www.facebook.com/yasmanycurimilma
Responder