Что нового

[Данные, строки] При выводе данных на экранную форму символ "/" самопроизвольно меняется на "."

Linaleks

Новичок
Сообщения
3
Репутация
0
Добрый день!
Помогите, пожалуйста, разобраться вот с таким вопросом:
Есть Excel файл, с единственным столбцом, в ячейках которого указаны номера вида: 0001/1; 0002/1; 0003/1 и так далее.
Задача состоит в следующем: запускается Win32 приложение, в котором активируется окно запроса в БД.
Далее номер из первой ячейки Excel файла вставляется в поле на экранной форме запроса, далее создается новый запрос - в поле вставляется номер из второй ячейки Excel файла, и т.д.
А проблема возникает вот такая: из Excel копируется номер 0001/1, а в поле на экранной форме отображается 0001.1
Подскажите, пожалуйста, как "заставить" Autoit передавать номер именно в том формате, в котором он у меня указан, т.е. чтобы символ / на экран передавался именно как символ /?
Заранее благодарю за помощь!

Привожу код ниже:
Код:
Local $sFilePath = 'C:\File1.xls' ;адрес файла Excel
_ExcelBookOpen($sFilePath)
Local $oExcel = _ExcelBookAttach($sFilePath)
Local $i = 1 
 For $i = 1 to 400 
	Do
		Local $sCell_Series = _ExcelReadCell($oExcel, $i, 1)

			Do
			WinActivate($WindowCaption_Terminal) ;активируем окно
			Sleep($MinSleepTime)
			Until WinActive($WindowCaption_Terminal)
				;Открываем окно нового запроса(ниже):
				Send("{ALT}")
				Send("{RIGHT}{ENTER}")
				Sleep(500)
				;Запрашиваем информацию по номеру (ниже):
				Send("{TAB}")
				Send($sCell_Series)
				Sleep(500)
				;Сохраняем и отправляем запрос (ниже):
				Send("{ALT}")
				Send("{DOWN}{ENTER}")
				Sleep(500)
				$i = $i+1 
		Until $i = 400 
	Next
_ExcelBookClose($oExcel)



З.Ы. Пробовала вместо переменной из Excel
Код:
Send($sCell_Series)

посылать в поле экранной формы конкретное значение:
Код:
Send("0001/1")

Результат тот же: на экране появляется 0001.1
 

Sp01LeR

Знающий
Сообщения
45
Репутация
12
Re: [Данные, строки] При выводе данных на экранную форму символ "/" самопроизво

Это из-за русской раскладки, установленой по-умолчанию...

Чтобы не заморачиваться с переключением, я сделал обертку для Send() - теперь текст будет посылаться в окно независимо от раскладки:

Код:
Func _SendAsc($str2s)
	Local $c = 0, $char = 0, $resStr =""
	If $str2s Then
		For $c=1 to StringLen ($str2s)
			$char=Asc(StringMid($str2s, $c, 1))
			If $char > 0 And $char < 100 Then
				$resStr &= "{ASC 0"&$char&"}"
			ElseIf $char > 0 And $char > 100 Then
				$resStr &= "{ASC "&$char&"}"
			Else
				;Nothing
			EndIf
		Next
		Send($resStr)
		Return 1
	Else
		Return 0
	EndIf
EndFunc

Local $sFilePath = 'C:\File1.xls' ;адрес файла Excel
_ExcelBookOpen($sFilePath)
Local $oExcel = _ExcelBookAttach($sFilePath)
Local $i = 1
 For $i = 1 to 400
    Do
        Local $sCell_Series = _ExcelReadCell($oExcel, $i, 1)

            Do
            WinActivate($WindowCaption_Terminal) ;активируем окно
            Sleep($MinSleepTime)
            Until WinActive($WindowCaption_Terminal)
                ;Открываем окно нового запроса(ниже):
                Send("{ALT}")
                Send("{RIGHT}{ENTER}")
                Sleep(500)
                ;Запрашиваем информацию по номеру (ниже):
                Send("{TAB}")
                _SendAsc($sCell_Series)
                Sleep(500)
                ;Сохраняем и отправляем запрос (ниже):
                Send("{ALT}")
                Send("{DOWN}{ENTER}")
                Sleep(500)
                $i = $i+1
        Until $i = 400
    Next
_ExcelBookClose($oExcel)


но, если текст в юникоде, то нужно заменить в функции строку
Код:
$char=Asc(StringMid($str2s, $c, 1))


на

Код:
$char=AscW(StringMid($str2s, $c, 1))
 
Автор
L

Linaleks

Новичок
Сообщения
3
Репутация
0
Re: [Данные, строки] При выводе данных на экранную форму символ "/" самопроизвольно меняется на "."

Спасибо огромное!!! Все работает! :smile:
 
Верх