Что нового

Чем не ООП ?

lukoas

Знающий
Сообщения
16
Репутация
9
конечно AutoIT не поддерживает ООП, но язык настолько гибкий, что позваляет сделать надстройку.
Начнем с малого, а иммено создания структур:
Код:
#include "StructCore.au3"
Const $cRecord  = "Type;ID;Text;cGraphic Graphic"	; Объявляем структуру, содержащую как обычные поля так и поле с другой структурой
Const $cGraphic = "X;Y;Left;Top;Right;Bottom"		; еще одна структура

$temp = StructCreate ( "cRecord" )					; Фактически это аналог new в С++

StructSetField($temp, "cRecord.ID",199)				; Заполняем поля
StructSetField($temp, "cRecord.cGraphic.X",1)
StructSetField($temp, "cRecord.cGraphic.Y",10)

ConsoleWrite (StructGetField($temp, "cRecord.ID") & @CRLF)			; Выводим поля
ConsoleWrite (StructGetField($temp, "cRecord.cGraphic.X") & @CRLF)
ConsoleWrite (StructGetField($temp, "cRecord.cGraphic.Y") & @CRLF)

ConsoleWrite (StructGetField($temp, "cRecord.cGraphic.Ye") & @CRLF)	; Пытаемся обратиться к несуществующему полю


Эту заготовку можно расширить и например добавить функции, например объэявлять класс в виде
Код:
Const $cRecord  = "Type;ID;Text;cGraphic Graphic;.setDefault;.cRecord ;.~cRecord"
Func cRecord_Create()
EndFunc
Func cRecord_Destroy()
EndFunc
Func cRecord_setDefault()
EndFunc

Чем не простенький ООП ? :IL_AutoIt_1:
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
lukoas, вот отличная UDF для этих целей!
AutoItObject
 
Автор
L

lukoas

Знающий
Сообщения
16
Репутация
9
[box title=Ремарка]lukoas, вот отличная UDF для этих целей!
AutoItObject[/box]

Интересная штуковина, базируется на OLE технологии и требует внешней dll :scratch:, но тогда непонятно зачем такие танци с бубном, не проше ли сразу на C++?
Касательно быстродействия - OLE будет быстрее, но для крупных проектов AutoIT использовать проблематично в силу низкого быстродействия.
Заметки:
AutoIT - быстрая разработка, медленое исполнение
Если делать на AutoIT то все должно быть на нем, только если требуется поднять быстродействие и другие методы уже испробованы, переходим на С/С++,Paskal,ASM.....(список продолжить в зависимости от предпочтений)
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
lukoas [?]
но тогда непонятно зачем такие танци с бубном, не проше ли сразу на C++?
Не понял вашего вопроса!
Причём тут C++? Мы тут говорим об Autoit и всё что с ним связано!
Вы предложили способ а-ля ООП, я в свою очередь дал вам ссылку на UDF, которая уже реализует ООП.

; Объявляем структуру,
Для работы со структурами в Autoit есть специальные функции!
Я нечего не имею против вашего метода основанного на массивах :smile:
Если он кому-нибудь пригодится, ради бога, я только за!
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
А причем здесь вообще ОПП? Получается что-то вроде "ОПП" только со своими собственными объектами. Но для этого логичнее и правильнее использовать функции. В чем смысл?

AutoItObject UDF реализует поддержку именно API объектов. Да геморойно, но некоторые плюшки в Windows, к сожалению, реализуются только через объекты, например Direct 2D, почти вся работа с Windows Explorer и т.д.
 
Верх