Что нового

_GUICtrlListBox_GetText() возвращает неверное значение

lexaSF

Новичок
Сообщения
182
Репутация
3
Вот кусок кода.Возвращаемое значение _GUICtrlListBox_FindString($List1,$read[$i]) = -1 т.к совподения нет, $FindText = 0 но все равно уменя получается что условие If $FindText = $read[$i] Then выполняется?Это почему так,я уже всю голову сломал
Код:
$read = IniReadSectionNames($Dir)
    If @error <> 1 Then
For $i=1 To $read[0]
            MsgBox(0,'',$i)
    $FindStr = _GUICtrlListBox_FindString($List1,$read[$i])
    MsgBox(0,'',$FindStr) ;возвращает -1
    $FindText = _GUICtrlListBox_GetText($List1,$FindStr) ; $findText = 0 здесь
    If $FindText = $read[$i] Then
        MsgBox(0,'',$LB_ERR ); здесь тоже -1
     ExitLoop       
     Else
_GUICtrlListBox_AddString($List1, $read[$i])
EndIf
Next
EndIf

креатор зачем ты мои темы закрываешь? и вообще ко всему придираешься??
 

Dark-Side

Знающий
Сообщения
72
Репутация
17
Re: Некорректная работа функций

После If $FindText = $read[$i] Then напиши ConsoleWrite("$FindText = " & $FindText & @CRLF & "$read[" & $i & "] = " & $read[$i] & @CRLF) и посмотри результат в output.

Если $FindText = 0 и If $FindText = $read[$i] Then продолжает работать, значит у тебя $read[$i] = 0. Ищи почему у тебя $read[$i] = 0.
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
Re: Некорректная работа функций

lexaSF сказал(а):
креатор зачем ты мои темы закрываешь? и вообще ко всему придираешься??

Одну из твоих тем закрыл я. А все потому, что есть некие правила, которые должны соблюдаться всеми участниками форума без исключения, дабы он (форум) не превратился в "кашу". Почти все, созданные тобой темы, так или иначе нарушают эти правила. Даже в этом сообщении есть 4 нарушения: Б.5, В.1, В.8 и "Обсуждение действий администрации". Переименуй пожалуйста название темы и впредь придерживайся правил форума. В противном случае, я закрою эту тему и дам тебе постоянный бан.

:ninja:

P.S

Тему можно назвать например так: "_GUICtrlListBox_GetText() возвращает неверное значение".
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,673
Репутация
2,486
Re: Некорректная работа функций

OffTopic:
Yashied
Мне кажется мы впустую тратим время, lexaSF'у по барабану правила и всё что с этим связано...
 
Автор
L

lexaSF

Новичок
Сообщения
182
Репутация
3
Я проверял! $read[$i] = 1 FindStr = -1 но все равно условие работает!Это не не правильное значение, а вообще фигня какая-то :wacko:
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
Если индекс элемента неверный, _GUICtrlListBox_GetText() возвращает 0 (тип INT). Переменная $read[$i] всегда содержит строковый тип. Т.о. ты сравниваешь два значения разного типа, что и вызывает непонятки.

Код:
$A = 0
$B = ''
If $A = $B Then
	MsgBox(0, '', '0 = ""')
EndIf


Правильнее было бы написать так:

Код:
$read = IniReadSectionNames($Dir)
If Not @error Then
	For $i = 1 To $read[0]
		$FindStr = _GUICtrlListBox_FindString($List1, $read[$i])
		If $FindStr <> -1 Then
			_GUICtrlListBox_AddString($List1, $read[$i])
		EndIf
	Next
EndIf
 
Автор
L

lexaSF

Новичок
Сообщения
182
Репутация
3
Yashied сказал(а):
Если индекс элемента неверный, _GUICtrlListBox_GetText() возвращает 0 (тип INT). Переменная $read[$i] всегда содержит строковый тип. Т.о. ты сравниваешь два значения разного типа, что и вызывает непонятки.

Код:
$A = 0
$B = ''
If $A = $B Then
	MsgBox(0, '', '0 = ""')
EndIf


Правильнее было бы написать так:

Код:
$read = IniReadSectionNames($Dir)
If Not @error Then
	For $i = 1 To $read[0]
		$FindStr = _GUICtrlListBox_FindString($List1, $read[$i])
		If $FindStr <> -1 Then
			_GUICtrlListBox_AddString($List1, $read[$i])
		EndIf
	Next
EndIf
не работает, но вы мне показали проблему , спасибо!
 

Dark-Side

Знающий
Сообщения
72
Репутация
17
Код:
$read = IniReadSectionNames($Dir)
    If @error <> 1 Then
For $i=1 To $read[0]
            MsgBox(0,'',$i)
    $FindStr = _GUICtrlListBox_FindString($List1,$read[$i])
    MsgBox(0,'',$FindStr) ;возвращает -1
    $FindText = _GUICtrlListBox_GetText($List1,$FindStr) ; $findText = 0 здесь
    If Int($FindText) = Int($read[$i]) Then
        MsgBox(0,'',$LB_ERR ); здесь тоже -1
     ExitLoop       
     Else
_GUICtrlListBox_AddString($List1, $read[$i])
EndIf
Next
EndIf

проверь это :smile:
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
lexaSF, трудно найти причину ошибки не видя полный скрипт (или хотя бы .ini файл).
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
И в чем была причина?
 
Автор
L

lexaSF

Новичок
Сообщения
182
Репутация
3
У меня $FindStr было числом а $read[$i] строкой
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
Автор
L

lexaSF

Новичок
Сообщения
182
Репутация
3
Dark-Side сказал(а):
Код:
$read = IniReadSectionNames($Dir)
    If @error <> 1 Then
For $i=1 To $read[0]
            MsgBox(0,'',$i)
    $FindStr = _GUICtrlListBox_FindString($List1,$read[$i])
    MsgBox(0,'',$FindStr) ;возвращает -1
    $FindText = _GUICtrlListBox_GetText($List1,$FindStr) ; $findText = 0 здесь
    If Int($FindText) = Int($read[$i]) Then
        MsgBox(0,'',$LB_ERR ); здесь тоже -1
     ExitLoop       
     Else
_GUICtrlListBox_AddString($List1, $read[$i])
EndIf
Next
EndIf

проверь это :smile:
Хм, терь сново понадобилось это, у меня почему то Int и Numner возвращают 0 почему так?
 
Верх