Что нового

_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 711
Re: Некорректная работа функций

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

:ninja:

P.S

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

CreatoR

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

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

lexaSF

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

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5 379
Репутация
2 711
Если индекс элемента неверный, _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 711
lexaSF, трудно найти причину ошибки не видя полный скрипт (или хотя бы .ini файл).
 
Автор
L

lexaSF

Новичок
Сообщения
182
Репутация
3
спс, я уже нашел)
 

Yashied

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

lexaSF

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

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5 379
Репутация
2 711
Автор
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 почему так?
 
Верх