Автор Тема: Объектно-ориентированное программирование в AutoIt  (Прочитано 19399 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн sims [?]

  • Осваивающий
  • **
  • Сообщений: 184
  • Репутация: 24
  • Пол: Мужской
    • Награды
Viktor1703  [?]
Цитировать
как получить экземпляр объекта
Попробуйте передавать экземпляр объекта. ProcedureDLL PureBasic()
  Static Object.PB::PureBasic
 
  Object = PB::PureBasic()
 
  ProcedureReturn @Object
EndProcedure
Только не думаю что это сработает, потому что AutoIt не знает ничего об классе (его методах, их аргументах и т. д.).

Русское сообщество AutoIt

Re: Объектно-ориентированное программирование в AutoIt
« Ответ #15 Отправлен: Август 18, 2013, 17:45:06 »

Оффлайн Afonichev [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 1535

  • Автор темы
  • Репутация: 408
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
sims

Не выходит...

Оффлайн sims [?]

  • Осваивающий
  • **
  • Сообщений: 184
  • Репутация: 24
  • Пол: Мужской
    • Награды
Оно и понятно, ведь AutoIt ничего не знает от содержимом объекта. В объекте не хранятся его имена. Как AutoIt узнает к какому методу обратиться?

Оффлайн Afonichev [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 1535

  • Автор темы
  • Репутация: 408
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
sims  [?]
Цитировать
Как AutoIt узнает к какому методу обратиться?

Для этого и придуман Interface, видимо ObjCreateInterface создаёт новый интерфейс который принимается в 3-й параметр и вызывает методы, кто его знает, я не силён в этих тонкостях и не углублялся.  :think:

Русское сообщество AutoIt

Re: Объектно-ориентированное программирование в AutoIt
« Ответ #18 Отправлен: Август 18, 2013, 19:10:03 »

Оффлайн sims [?]

  • Осваивающий
  • **
  • Сообщений: 184
  • Репутация: 24
  • Пол: Мужской
    • Награды
Может вам такой вариант подойдет?
(нажмите для показа/скрытия)
Отличие в том, что в скрипте не хранится описание методов объекта, и функция DllCreateObj скрипта, может создать объект из любой dll, без необходимости хранить в скрипте описание объекта.

Оффлайн Afonichev [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 1535

  • Автор темы
  • Репутация: 408
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
sims

У меня PB 5.10, да и основной проблемы оно не решает.

Оффлайн sims [?]

  • Осваивающий
  • **
  • Сообщений: 184
  • Репутация: 24
  • Пол: Мужской
    • Награды
Viktor1703  [?]
Цитировать
основной проблемы оно не решает
Какова основная проблема?
Если хотите получить из dll, объект в формате AutoIt, то не думаю что это так просто. Спросите у разработчиков. Может они что-то подскажут.

Оффлайн Afonichev [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 1535

  • Автор темы
  • Репутация: 408
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
sims  [?]
Цитировать
Какова основная проблема?

Например в некоторых языках нет ObjCreateInterface, а значит такого рода Dll бесполезна, нужно из dll возвращать готовый объект а не указатель на таблицу, если же это не возможно, то не велика потеря...

Русское сообщество AutoIt

Re: Объектно-ориентированное программирование в AutoIt
« Ответ #22 Отправлен: Август 18, 2013, 23:08:23 »

Оффлайн sims [?]

  • Осваивающий
  • **
  • Сообщений: 184
  • Репутация: 24
  • Пол: Мужской
    • Награды
Вам наверное нужно ActiveX (*.ocx)?
ИМХО преимущества перед обычными dll нет, но требует регистрации в системе, что минус.

Оффлайн Afonichev [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 1535

  • Автор темы
  • Репутация: 408
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
sims  [?]
Цитировать
ИМХО преимущества перед обычными dll нет, но требует регистрации в системе, что минус.


Вот именно ActiveX я не долюбливаю, в общем с помощью тестов получилось вернуть из dll именно объект, но как вы уже говорили, методов он не видит, нужно создавать интерфейс в AutoIt скрипте, либо писать dll как полагается с обработкой QueryInterface, AddRef, Release, Invoke, GetIDsOfNames и т.д.

Кажется нашёл решение, попробую завтра сделать (точнее сегодня).
« Последнее редактирование: Август 19, 2013, 01:07:08 от Viktor1703, Причина: Объединение сообщений »

Оффлайн Afonichev [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 1535

  • Автор темы
  • Репутация: 408
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Ну вот всё и решилось, обычная dll которая возвращает готовый объект.

(нажмите для показа/скрытия)
« Последнее редактирование: Август 24, 2013, 19:27:04 от Viktor1703 »

Оффлайн Afonichev [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 1535

  • Автор темы
  • Репутация: 408
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
sims  [?]
Цитировать
Да, это прибавит им работы, но оно того стоит, ведь упростит разработку. Стоит попросить. Возможно что сделают.

Не, не сделают, уже спрашивал на оф. форуме про поддержку пространств имён, мне сказали что AutoIt не объектно - ориентированный и в нём нельзя этого сделать, так же это написано в "что никогда не будет реализовано в AutoIt", так что пролетаем  ;D
« Последнее редактирование: Февраль 28, 2014, 16:39:34 от Viktor1703 »

Оффлайн sims [?]

  • Осваивающий
  • **
  • Сообщений: 184
  • Репутация: 24
  • Пол: Мужской
    • Награды
Viktor1703  [?]
Цитировать
спрашивал на оф. форуме про поддержку пространств имён, мне сказали что AutoIt не объектно - ориентированный и в нём нельзя этого сделать
Как пространства имен связаны с ООП?
Или разробы что-то не правильно поняли, или они реально не в теме и не знают в чем разница. :o :think:

Оффлайн _dron_ [?]

  • Новичок
  • *
  • Сообщений: 84
  • Репутация: 8
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.10.2
что вы зацепились за пространство имен есть оно в AutoIt - это локальное и глобальное пространство.  ;D

Оффлайн sims [?]

  • Осваивающий
  • **
  • Сообщений: 184
  • Репутация: 24
  • Пол: Мужской
    • Награды
_dron_  [?]
Цитировать
это локальное.
Подразумеваете функции?
Это не совсем то, что имеется в виду. http://ru.wikipedia.org/wiki/Пространство_имён_(программирование)

Учитывая специфику библиотек AutoIt'а, данная тема более чем актуальна. Пространства имен позволяют исключить коллизии имен различных объектов и иметь одноименные функции, переменные, массивы и т. д. в одном проекте и глобальные переменные, которые глобальны не для всей программы, а только для текущего пространства.

Русское сообщество AutoIt

Re: Объектно-ориентированное программирование в AutoIt
« Ответ #29 Отправлен: Февраль 28, 2014, 21:22:34 »

 

Похожие темы

  Тема / Автор Ответов Последний ответ
14 Ответов
61558 Просмотров
Последний ответ Апрель 28, 2012, 12:36:49
от CreatoR
2 Ответов
10144 Просмотров
Последний ответ Ноябрь 16, 2009, 09:13:26
от Suppir
12 Ответов
24953 Просмотров
Последний ответ Август 27, 2011, 20:09:15
от Nero21
15 Ответов
11498 Просмотров
Последний ответ Май 01, 2012, 22:32:34
от running-frag
6 Ответов
4103 Просмотров
Последний ответ Ноябрь 08, 2010, 13:06:56
от Belfigor
18 Ответов
6979 Просмотров
Последний ответ Октябрь 30, 2011, 17:09:36
от VladUs
30 Ответов
17624 Просмотров
Последний ответ Апрель 02, 2012, 03:44:53
от Garrett
4 Ответов
6019 Просмотров
Последний ответ Июль 12, 2012, 11:06:51
от firex
4 Ответов
1564 Просмотров
Последний ответ Февраль 25, 2015, 22:20:10
от joiner
2 Ответов
1512 Просмотров
Последний ответ Март 21, 2016, 23:02:27
от AZJIO