Что нового

Обсуждение AutoIt бета-версий

InnI

AutoIT Гуру
Сообщения
4 239
Репутация
1 123
Свежая v3.3.13.21 Beta.
Сообщают о решении проблем с кодировками файлов и возвратом бинарных данных:
Fixed #2901: Memory error when specifying a UTF file mode that includes a BOM when no BOM is present.
https://www.autoitscript.com/forum/topic/173761-autoit-v331321-beta/
 

joiner

Модератор
Локальный модератор
Сообщения
3 035
Репутация
503
еще бы и это решили http://autoit-script.ru/index.php?topic=359.msg117136#msg117136
 

InnI

AutoIT Гуру
Сообщения
4 239
Репутация
1 123
joiner
еще бы и это решили
По поводу возврата бинарных данных? Так это оно и есть.
Смотрю сейчас на autoit-v3.3.14.0-setup-rc2.exe ( RC2 :laugh: ) - всё нормально.
 

inververs

AutoIT Гуру
Сообщения
2 135
Репутация
462
О, так и релиз 3.3.14 вышел


Добавлено:
Сообщение автоматически объединено:

Добавили такой пример добавления в форму изображений PNG:
См 4 пример к GUICtrlCreatePic
Код:
; #INTERNAL_USE_ONLY#=================================================================================================
; Name...........: _GUICtrlPic_Create
; Description ...: Creates a Picture control for the GUI
; Syntax ........: _GUICtrlPic_Create($sFilename, $iLeft, $iTop, $iWidth, $iHeight, $iStyle = -1 , $iExStyle = -1)
; Parameters ....: $sFilename - Path of image file
; Author ........: UEZ
; Modified.......: Melba23, guinness, jpm
; Remarks .......: PNG image can be used.
; ====================================================================================================================
Func _GUICtrlPic_Create($sFilename, $iLeft, $iTop, $iWidth = -1, $iHeight = -1, $iStyle = -1, $iExStyle = -1)
    _GDIPlus_Startup()
    Local $idPic = GUICtrlCreatePic("", $iLeft, $iTop, $iWidth, $iHeight, $iStyle, $iExStyle)
    Local $hBitmap = _GDIPlus_BitmapCreateFromFile($sFilename)
    If $iWidth = -1 Then $iWidth = _GDIPlus_ImageGetWidth($hBitmap)
    If $iHeight = -1 Then $iHeight = _GDIPlus_ImageGetHeight($hBitmap)
    Local $hBitmap_Resized = _GDIPlus_BitmapCreateFromScan0($iWidth, $iHeight)
    Local $hBMP_Ctxt = _GDIPlus_ImageGetGraphicsContext($hBitmap_Resized)
    _GDIPlus_GraphicsSetInterpolationMode($hBMP_Ctxt, $GDIP_INTERPOLATIONMODE_HIGHQUALITYBICUBIC)
    _GDIPlus_GraphicsDrawImageRect($hBMP_Ctxt, $hBitmap, 0, 0, $iWidth, $iHeight)
    Local $hHBitmap = _GDIPlus_BitmapCreateDIBFromBitmap($hBitmap_Resized)
    Local $hPrevImage = GUICtrlSendMsg($idPic, $STM_SETIMAGE, 0, $hHBitmap) ; $STM_SETIMAGE = 0x0172
    _WinAPI_DeleteObject($hPrevImage); Delete Prev image if any
    _GDIPlus_BitmapDispose($hBitmap)
    _GDIPlus_BitmapDispose($hBitmap_Resized)
    _GDIPlus_GraphicsDispose($hBMP_Ctxt)
    _WinAPI_DeleteObject($hHBitmap)
    _GDIPlus_Shutdown()

    Return $idPic
EndFunc   ;==>_GUICtrlPic_Create
 

joiner

Модератор
Локальный модератор
Сообщения
3 035
Репутация
503
По поводу возврата бинарных данных? Так это оно и есть.
Не работает. На память не ругается, но пару кракозябр написало в файл
 

InnI

AutoIT Гуру
Сообщения
4 239
Репутация
1 123
joiner
пару кракозябр написало в файл
Теперь по умолчанию режим открытия файла "UTF8 (without BOM)". Чтобы записать в ANSI теперь нужно принудительно открывать файл в режиме $FO_ANSI (512).
 

madmasles

Модератор
Глобальный модератор
Сообщения
7 790
Репутация
2 319
Похоже, в v3.3.14.0 убрали все Map* - функции. Почему? :scratch:
 

inververs

AutoIT Гуру
Сообщения
2 135
Репутация
462
Note
The Map functionality was disabled in this release as it was not ready. I will release another beta version later with it re-enabled for continued dev and test.
Не осилили.
 

joiner

Модератор
Локальный модератор
Сообщения
3 035
Репутация
503
InnI [?]
Чтобы записать в ANSI теперь нужно принудительно открывать файл в режиме $FO_ANSI (512)
работает. теперь нужно заиметь привычку указывать режим открытия :smile:
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5 379
Репутация
2 704
joiner сказал(а):
работает. теперь нужно заиметь привычку указывать режим открытия
Засада будет в совместимости с предыдущими скриптами. IMHO, ужасное изменение.
 

InnI

AutoIT Гуру
Сообщения
4 239
Репутация
1 123
Yashied
IMHO, ужасное изменение
Согласен полностью. Уже начинает надоедать создавать файлы в три строки вместо одной и везде добавлять +512.
Но, на мой взгляд, главная "засада" будет здесь:
Files containing only characters 1-127 are opened in UTF-8 with no BOM ($FO_UTF8_NOBOM) mode by default. Previously they would be opened in ANSI mode. Use the $FO_ANSI flag to override.
Получается, что после добавления в файл с английским текстом русских символов, новый файл будет сохранён в UTF8 БЕЗ(!) BOM. А если символов будет мало, то ни один редактор правильно кодировку не определит! И всё это только ради какой-то "совместимости" с современными редакторами (to be more in line with modern editors), хотя сам AutoIt поставляется со SciTE, которая с UTF8 до сих пор работает некорректно. И это я ещё про Wrapper промолчу.

Но, как говорится, выбирать не приходится. Будем привыкать.


Добавлено:
Сообщение автоматически объединено:

Вот если бы добавили настройку в функции AutoItSetOption() для установки кодировки файла по умолчанию... было бы проще скрипты править.
 

Skif_off

Знающий
Сообщения
173
Репутация
12
Наткнулся на замечание Yashied, поясните, пожалуйста, о чём речь?

И такой вопрос возник: где можно почитать о планах развития? Интересует, насколько может подрасти бинарник.
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5 379
Репутация
2 704
Skif_off сказал(а):
Наткнулся на замечание Yashied, поясните, пожалуйста, о чём речь?
Грубо говоря, теперь нельзя послать сообщение элементу с установленным $GUI_DISABLE. Это легко проверить на Dummy, т.е. GUICtrlSendToDummy() не будет работать. В Skin UDF я посылал сообщение WM_COMMAND в "Static" элемент с установленным $GUI_DISABLE:

Код:
_SendMessage($skData[$Index][4], $WM_COMMAND, $skData[$Index][6], $skData[$Index][5])


И в 3.3.14.x GUIGetMsg() перестала срабатывать на это сообщение. Работает только, если установить $GUI_ENABLE, что приводит к дополнительной и далеко нетривиальной правке UDF.
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5 379
Репутация
2 704
Одно лечат, другое калечат.
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5 379
Репутация
2 704
Removed au3record.exe as it's often mistakenly flagged as malware causing the entire AutoIt zip/installer to be flagged.
После этого я даже и не знаю что думать о разработчиках.
 

Andrey_A

Новичок
Сообщения
104
Репутация
3
Обнаружил такой баг, не помню был ли он в предыдущих версиях.
В ListView при создании пункта ListViewItem со стилем $LVS_EX_INFOTIP подсказка появляется за окном, если окно имеет атрибут "Поверх всех окон"

Код:
#include <ListViewConstants.au3>
#include <GUIConstantsEx.au3>
#include <ButtonConstants.au3>

Global $hGUI, $idButton, $OnTop=1
$hGUI = GUICreate("ListView", 240, 260, 100, 200)
$idListView = GUICtrlCreateListView("Колонка", 10, 10, 220, 150, -1, $LVS_EX_INFOTIP)
GUICtrlCreateListViewItem("Длинный текст пункта, подсказка которого появляется сзади окна, если оно 'Поверх всех окон'", $idListView)
$idButton = GUICtrlCreateButton("", 45, 170, 150, 40,$BS_ICON)
_OnTop()
GUISetState()

While 1
  Switch GUIGetMsg()
    Case $GUI_EVENT_CLOSE
      Exit
    Case $idButton
      $OnTop = $OnTop ? 0 : 1
      _OnTop()
  EndSwitch
WEnd

Func _OnTop()
  GUICtrlSetImage($idButton, "shell32.dll", -248+$OnTop)
  WinSetOnTop($hGUI, '', $OnTop)
EndFunc
 
Верх