Что нового

Функции-призраки получения резолюции _GDIPlus_ImageGetHorizontalResolution и _GDIPlus_ImageGetVerticalResolution

Статус
Закрыто для дальнейших ответов.

Oki

Продвинутый
Сообщения
452
Репутация
63
Код:
#include <GDIPlus.au3>
_GDIPlus_ImageGetHorizontalResolution($hImage)
_GDIPlus_ImageGetVerticalResolution($hImage)
Функции присутствуют как в русской справке, так и на официальном сайте.

https://autoit-script.ru/docs/libfunctions/_gdiplus_imagegethorizontalresolution.htm
https://autoit-script.ru/docs/libfunctions/_gdiplus_imagegetverticalresolution.htm
https://www.autoitscript.com/autoit3/docs/libfunctions/_GDIPlus_ImageGetHorizontalResolution.htm
https://www.autoitscript.com/autoit3/docs/libfunctions/_GDIPlus_ImageGetVerticalResolution.htm

В библиотеке GDIPlus.au3 обе функции упомянуты в списке функций, перечисленных в специальном комментарии. Но в этой библиотеке больше о них ничего нет. SciTE Lite эти функции не подсказывает при наборе. Но компилятор не ругается и выполняет скрипт. Что бы это значило?
 

joiner

Модератор
Локальный модератор
Сообщения
3,557
Репутация
628
В полной версии редактора подсказка есть. Компиляция независима от функциональности редактора
какую подробность вы хотите найти в библиотеке?. функции просты
 
Автор
Oki

Oki

Продвинутый
Сообщения
452
Репутация
63
В полной версии редактора подсказка есть.
Вот как, это так на версии Lite экономят, оказывается. Предполагаю, что это всё же неспроста, а как-то связано с отстутствием в этой библиотеке.
Компиляция независима от функциональности редактора
Это разумеется, но ожидается согласованность. В аналогичных ситуациях она наблюдается.
какую подробность вы хотите найти в библиотеке?. функции просты
В целом хочется иметь возможность переписывать отдельные функции под свои нужды. Удивительно, что эти две функции в списке заявлены, а по факту в библиотеке не фигурируют. Как скрипт с их вызовом вообще компилируется? Может быть, их сделали нативными в AutoIt, в отличие от прочих (всех ли?) функций библиотеки? Протестировать напрямую, будет ли работать без #include <GDIPlus.au3> невозможно, так как в любом случае эту библиотеку нужно подключать хотя бы для того, чтобы определить дескриптор изображения.
 
Последнее редактирование:
Автор
Oki

Oki

Продвинутый
Сообщения
452
Репутация
63
Возможно, взяв из GDIPlus.au3 используемые функции и перенести только их в свой скрипт. Геморно, но возможно.
Взять то, чего там нет? О чём вообще здесь речь шла, как не об этом?
 
Последнее редактирование:

IMStrelcov

CTPEJIbLLOB
Сообщения
259
Репутация
66
Код:
Func _GDIPlus_ImageGetHorizontalResolution($hImage)
   If ($hImage = -1) Or (Not $hImage) Then Return SetError(11, 0, 0)
   Local $aResult = DllCall($ghGDIPDll, "int", "GdipGetImageHorizontalResolution", "handle", $hImage, "float*", 0)
   If @error Then Return SetError(@error, @extended, 0)
   If $aResult[0] Then Return SetError(10, $aResult[0], 0)
   Return Round($aResult[2])
EndFunc

Func _GDIPlus_ImageGetVerticalResolution($hImage)
   If ($hImage = -1) Or (Not $hImage) Then Return SetError(11, 0, 0)
   Local $aResult = DllCall($ghGDIPDll, "int", "GdipGetImageVerticalResolution", "handle", $hImage, "float*", 0)
   If @error Then Return SetError(@error, @extended, 0)
   If $aResult[0] Then Return SetError(10, $aResult[0], 0)
   Return Round($aResult[2])
EndFunc

может потребоваться замена $ghGDIPDLL на $__g_hGDIPDll в разных версиях библиотеки по разному.
 
Последнее редактирование:
Автор
Oki

Oki

Продвинутый
Сообщения
452
Репутация
63

joiner

IMStrelcov

Похоже, что всё сводится к тому, что есть какие-то нестабильные глюки в SciTE Lite, насчёт собственно библиотеки вопрос снимается. Не надо мне, оказывается, было изначально только на редактор полагаться.
У AutoIt нет компилятора. Скрипты интерпретируются. Ошибка в коде будет найдена в момент выполнения, а не при создании исполняемого файла.
Формально есть. Практически, разумеется, за компиляцией стоит создание программы, интерпретирующей конкретный скрипт.
 
Последнее редактирование:

Prog

Продвинутый
Сообщения
597
Репутация
77
Формально есть.
Нет. Потому что https://ru.wikipedia.org/wiki/Компилятор
Компиля́тор — программа, переводящая написанный на языке программирования текст в набор машинных кодов
То что в контексте AutoIt называют компиляцией, на самом деле таковым не является. У AutoIt заранее скомпилированный исполняемый файл с интерпретатором в ресурсы которого записывается скрипт.
С таким же успехом создание самораспаковывающегося архива тоже можно называть компиляцией.
 
Последнее редактирование:
Автор
Oki

Oki

Продвинутый
Сообщения
452
Репутация
63
С таким же успехом создание самораспаковывающегося архива тоже можно называть компиляцией.
Вот это загнул! Да ладно спорить, все всё понимают, всем ясно, что это немного "сова на глобус", нечего разводить флейм в закрытой теме. Тем более, что сами авторы AutoIt прошивают в контекстное меню пункт "Compile".
 

Prog

Продвинутый
Сообщения
597
Репутация
77
Самораспаковывающийся архив это исполняемый exe файл в конце которого расположен архив. Статья про теме.
В этом плане, создание исполняемого файла в AutoIt аналогично.

ем более, что сами авторы AutoIt прошивают в контекстное меню пункт "Compile".
Они много чего могут написать. Но суть в том что для AutoIt нет компилятора.
Изначальная мысль которую я старался донести это то что компилятор находит ошибки во время компиляции, а интерпретатор во время исполнения строки с ошибкой. Из-за этого при сборке исполняемого файла из скрипта, может не быть сообщений об ошибках в коде. Они появятся при выполнении.
 

joiner

Модератор
Локальный модератор
Сообщения
3,557
Репутация
628
не все ошибки могут быть выявлены заранее, если их появление не прописано в коде. Объект может не появится и будет ошибка, файлы не найдены и массив нулевой. всё относительно и зависит от кодера.
спор ради спора? написано "компилятор", значит компилятор в понимании автора языка. а если точно, то
Происходит от лат. compilatio «хищение, грабёж», далее из compilare «красть, расхищать», далее из cum (варианты co-, com-, con-) «с, вместе» + pilare «ограблять», далее из неустановленной формы.
Тема закрыта
 
Статус
Закрыто для дальнейших ответов.
Верх