Что нового

Почему при опросе данных в GUI - они автоматически считаются строчным типом

dr.room

Новичок
Сообщения
283
Репутация
0
Всем привет!
Не могу понять из-за чего данные в GUI при опросе оказываются строчными хотя в поле будут введены цифры? Причем даже не важно где проводиться опрос: в GUI непосредственно или в ini файле, куда эти данные записываются после опроса. Как это можно исправить ?
Спасибо заранее
Код:
#cs ----------------------------------------------------------------------------
Если IsInt заменить на IsNumber - результат тот же. При вводе в поле цифр  - они считаются строчными данными

#ce ----------------------------------------------------------------------------
#include <GUIConstantsEx.au3>
#include <ComboConstants.au3>
#include <WindowsConstants.au3>

#Region ### START Koda GUI section ### Form=D:\В Облака\IDrive - снхронизация\Общин настройки ПК\Общая оптимизация\AutoIt\Нужные мне скрипты\Биржы и почтовики\socpublic\Тесты\GUI для почтовика\Чтение настроек INI\Чтение зависимых  настроек\С GUI\Form1.kxf
$Form1 = GUICreate("Form1", 515, 292, -1, -1)
GUISetFont(10, 400, 0, "MS Sans Serif")
$iCombo1 = GUICtrlCreateCombo("", 168, 80, 207, 25, BitOR($CBS_DROPDOWN, $CBS_AUTOHSCROLL))
GUICtrlSetData(-1, "Январь|Февраль")
$Label1 = GUICtrlCreateLabel("Выберите месяц ", 168, 40, 134, 24)
$Label2 = GUICtrlCreateLabel("Укажите день ", 168, 120, 115, 24)
$Button1 = GUICtrlCreateButton("Старт", 400, 232, 75, 25)
$Input = GUICtrlCreateInput("", 168, 160, 207, 28)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit

		Case $Button1
			_Opros()

	EndSwitch
WEnd
MsgBox(262208, "", "Проверки завершены", 3)
GUIDelete()

Func _Opros()

	$Read1 = GUICtrlRead($iCombo1)
	$Read2 = GUICtrlRead($Input)

	If $Read1 Then

		If IsInt($Read1) Then
			MsgBox(64, "", "Тип элемента в списке: числовой")
		Else
			MsgBox(64, "", "Тип элемента в списке : строчный")
		EndIf
	EndIf

	If $Read2 Then
		If IsInt($Read2) Then
			MsgBox(64, "", "Тип элемента в поле ввода: числовой")
		Else
			MsgBox(64, "", "Тип элемента в поле ввода: строчный")
		EndIf
	EndIf

EndFunc   ;==>_Opros
 
Автор
D

dr.room

Новичок
Сообщения
283
Репутация
0
Спасибо, Khaibit
За календарь я знаю - но что делать с идентификацией чисел именно как числовых типов данных а не строчных :stars:
 

joiner

Модератор
Локальный модератор
Сообщения
3,556
Репутация
628
как вариант
Код:
Func _Opros()

	$Read1 = Int(GUICtrlRead($iCombo1))
	$Read2 = Int(GUICtrlRead($Input))

	If $Read1 Then
		MsgBox(64, "", "Тип элемента в списке: числовой" & @CRLF & $Read1)
	Else
		MsgBox(64, "", "Тип элемента в списке : строчный" & @CRLF & $Read1)
	EndIf

	If $Read2 Then
		MsgBox(64, "", "Тип элемента в поле ввода: числовой" & @CRLF & $Read2)
	Else
		MsgBox(64, "", "Тип элемента в поле ввода: строчный" & @CRLF & $Read2)
	EndIf
EndFunc   ;==>_Opros


Func _Opros()

	$Read1 = Execute(GUICtrlRead($iCombo1))
	$Read2 = Execute(GUICtrlRead($Input))

	If IsInt($Read1) Then
		MsgBox(64, "", "Тип элемента в списке: числовой" & @CRLF & $Read1)
	Else
		MsgBox(64, "", "Тип элемента в списке : строчный" & @CRLF & $Read1)
	EndIf

	If IsInt($Read2) Then
		MsgBox(64, "", "Тип элемента в поле ввода: числовой" & @CRLF & $Read2)
	Else
		MsgBox(64, "", "Тип элемента в поле ввода: строчный" & @CRLF & $Read2)
	EndIf
EndFunc   ;==>_Opros
 
Автор
D

dr.room

Новичок
Сообщения
283
Репутация
0
Если можно еще вопрос
Как такое может быть что пустое поле скрипт автоматически считает строчными данными?? :stars:
Оно же не заполнено!

Из этого следует, что проводить проверку аля: можно ли прочитать состояние элемента - не корректным занятием. Потому что - всегда можно! :smile:
 
Верх