Что нового

Неправильно выполняются операторы сравнения. Помогите найти ошибку

ckret

Новичок
Сообщения
44
Репутация
0
Подскажите, где в коде ошибка, не могу понять, почему не выполняются правильно операторы сравнения. При сравнении 2<4 получаю верно, а при 2<12 не верно. Такое ощущение, что сравнение происходит только по 1м цифрам, т.е. не 2<12 , а 2<1...
Код:
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>



#Region ### START Koda GUI section ### Form=
$Form1_1 = GUICreate("Form1", 502, 467, 346, 134)
GUISetFont(10, 400, 0, "MS Sans Serif")
GUISetBkColor(0xFFFBF0)
$starter_button = GUICtrlCreateButton("Старт", 408, 192, 75, 49)

$CompBegin1 = GUICtrlCreateInput("1", 265, 210, 56, 24 )
$CompEnd1 = GUICtrlCreateInput("1", 335, 210, 56, 24)

GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
	Case $GUI_EVENT_CLOSE
Exit
	case $starter_button
_logic ()
	EndSwitch
 WEnd

func _logic ()

$CompBegin = GUICtrlRead($CompBegin1)
$CompEnd = GUICtrlRead($CompEnd1)


ConsoleWrite ("-" & $CompBegin & "-" &$CompEnd & "-")

if  $CompBegin < $CompEnd Then
   ConsoleWrite ("ok")
   ElseIf  $CompBegin > $CompEnd Then
 ConsoleWrite ("Not True")
 Else
	 ConsoleWrite ("vary bad")
  EndIf

  EndFunc
 

Yashied

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

Код:
$CompBegin = Number(GUICtrlRead($CompBegin1))
$CompEnd = Number(GUICtrlRead($CompEnd1))
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,321
ckret,
Иллюстрация этой ошибки:
Код:
$sFirst = '2'
$sSecond = '12'
ConsoleWrite('$sFirst < $sSecond: ' & ($sFirst < $sSecond) & @LF)
ConsoleWrite('Number($sFirst) < Number($sSecond): ' & (Number($sFirst) < Number($sSecond)) & @LF)
 
Верх