ChanServ changed the topic of #libreoffice-ru to: Канал поддержки русскоязычных пользователей LibreOffice | Wiki TDF http://tdf.io/wikiru | On-line документация http://tdf.io/helpru | Логи канала: http://goo.gl/gzwdwU
_whitelogger has joined #libreoffice-ru
JohnDoe_71Rus has joined #libreoffice-ru
JohnDoe_71Rus has quit [Ping timeout: 240 seconds]
JohnDoe_71Rus has joined #libreoffice-ru
<lo-ru-tg> <w​oodyfire> Всем доброго дня.
<lo-ru-tg> <w​oodyfire> Подскажите пожалуйста в чем разница следующих определений и объявлений переменных
<lo-ru-tg> <w​oodyfire> определение структуры данных
<lo-ru-tg> <w​oodyfire> Type typeTest
<lo-ru-tg> <w​oodyfire> name2 as String
<lo-ru-tg> <w​oodyfire> name1 as String
<lo-ru-tg> <w​oodyfire> name3 as String
<lo-ru-tg> <w​oodyfire> End Type
<lo-ru-tg> <w​oodyfire> объявление переменных разными способами
<lo-ru-tg> <w​oodyfire> Dim variable1 as typeTest
<lo-ru-tg> <w​oodyfire> Dim variable2 as Object
<lo-ru-tg> <w​oodyfire> variable2 = CreateObject("typeTest")
<lo-ru-tg> <w​oodyfire> Dim variable3 as new typeTest
<lo-ru-tg> <Mike> Первое и второе - практически одно и то же. В результате получается переменная типа объект, в первом случае туда уже положен объект нужного класса, во втором - присвоение делает это.
<lo-ru-tg> <Mike> Теоретически третий вариант мог бы отличаться для классов с конструктором. Но у пользовательского типа нет конструктора, так что и этот вариант делает здесь то же самое.
<lo-ru-tg> 'Untitled Image' uploaded by w​oodyfire: https://i.imgur.com/BOhXZPk.jpg
<lo-ru-tg> <w​oodyfire> Я правильно понимаю, что для пользовательской структуры все равно. А вот объявляя UNO структуру лучше использовать New
<lo-ru-tg> <Mike> не лучше, а обязательно
<lo-ru-tg> <Mike> там есть конструктор
<lo-ru-tg> <Mike> нельзя создать неинициализированный такой объект
<lo-ru-tg> <Mike> но для UNO можно использовать и CreateObject
<lo-ru-tg> <w​oodyfire> Я так понимаю в принципе оба способа одинаковы в итоге. Оба используют фабрику по созданию экземпляров объектов. Что приводит к выделению памяти из кучи.
<lo-ru-tg> 'Untitled Image' uploaded by w​oodyfire: https://i.imgur.com/tJRDbnm.jpg
<lo-ru-tg> <Mike> Ооооо, а причём тут куча? в бейсике вы вообще не управляете аллокацией, и на самом деле всё выделяется из кучи
<lo-ru-tg> <Mike> As New позволяет передавать аргументы в конструктор - так что не одинаковы
<lo-ru-tg> <Mike> но если используется конструктор без аргументов (чаще всего) - то да
<lo-ru-tg> <w​oodyfire> ну в бейсике нет доступа. Но работа фабрики и имеющиеся конструкторы и деструкторы. Разве это не работа с кучей и т.д.
<lo-ru-tg> <Mike> нет
<lo-ru-tg> <w​oodyfire> Это уже низкий уровень
<lo-ru-tg> <Mike> это уровень передачи аргументов, а не уровень выделения памяти
<lo-ru-tg> <Mike> и про деструкторы речь не шла 😉
<lo-ru-tg> <w​oodyfire> нет не шла. Но если есть конструктор, то и деструктор имеется. Без него никуда
<lo-ru-tg> <Mike> вообще и на низком уровне конструктор/деструктор и выделение памяти - ортогональные понятия; можно выделять из кучи без конструкторов, а можно вызывать конструкторы для объектов в стеке
<lo-ru-tg> <Mike> а это тут причём? если начинать говорить про то, без чего никак - то мы вообще в сторону уйдём
<lo-ru-tg> <w​oodyfire> не будем углубляться. Все равно контроль за этим не в basic
<lo-ru-tg> <w​oodyfire> согласен.
<lo-ru-tg> <Mike> ещё раз: все те варианты отличаются не выделением памяти, а инициализацией выделенных объектов
<lo-ru-tg> <w​oodyfire> Ок
<lo-ru-tg> <w​oodyfire> Dim variable1 as typeTest
<lo-ru-tg> <w​oodyfire> то есть этот вариант имеет право жить
<lo-ru-tg> <Mike> конечно
<lo-ru-tg> <w​oodyfire> Спасибо.
<lo-ru-tg> <w​oodyfire> Хорошая документация спору нет. Но у меня пока еще трудности с пониманием объектной модели.
<lo-ru-tg> <w​oodyfire> я правильно понимаю, что в модальных диалоговых формах используются классы объектов из com.sun.star.awt
<lo-ru-tg> <K​ompilainenn> А что вообще ты делаешь?
<lo-ru-tg> <w​oodyfire> Времянку для облегчения своей работы
<lo-ru-tg> <w​oodyfire> если вкратце, то вот
<lo-ru-tg> 'Untitled Image' uploaded by w​oodyfire: https://i.imgur.com/19Sy98d.jpg
<lo-ru-tg> <w​oodyfire> А данные располагаются на СУБД PostgreSQL и морда получает данные из СУБД через написанный API на plpgsql
<lo-ru-tg> <w​oodyfire> в общем описывать долго. но вкратце как то так
<lo-ru-tg> <w​oodyfire> я правильно понимаю, что в модальных диалоговых формах используются классы объектов из com.sun.star.awt
<lo-ru-tg> <w​oodyfire> ?
<lo-ru-tg> <w​oodyfire> Вот у ListBox имеется метод получения выбранной позиции
<lo-ru-tg> 'Untitled Image' uploaded by w​oodyfire: https://i.imgur.com/NYMKiHa.jpg
<lo-ru-tg> <w​oodyfire> а у ComboBox такого метода нет.
<lo-ru-tg> 'Untitled Image' uploaded by w​oodyfire: https://i.imgur.com/gV8jG7l.jpg
<lo-ru-tg> <w​oodyfire> каким образом можно получить номер выбранной позиции у ComboBox
<lo-ru-tg> <w​oodyfire> ?
<lo-ru-tg> <w​oodyfire> Я пока вижу один вариант.
<lo-ru-tg> <w​oodyfire> Dim aArrayData(5,5)
<lo-ru-tg> <w​oodyfire> Dim iPosition as Short
<lo-ru-tg> <w​oodyfire> Dim cmbObject as ComboBox
<lo-ru-tg> <w​oodyfire> For i=LBound(aArrayData,1) to UBound(aArrayData,1)
<lo-ru-tg> <w​oodyfire> If aArray(i,0)=cmbObject.Text Then
<lo-ru-tg> <w​oodyfire> iPosition = i
<lo-ru-tg> <w​oodyfire> End If
<lo-ru-tg> <w​oodyfire> Next i
<lo-ru-tg> <w​oodyfire> Правда вместо For возможно лучше использовать While. Так как можно остановить поиск.
<lo-ru-tg> <w​oodyfire> Но хочется верить, что я не там смотрю или чего то не знаю и есть метод получения позиции готовый у ComboBox
<lo-ru-tg> <w​oodyfire> кто знает?
<lo-ru-tg> <Mike> Всё Вы правильно говорите: для комбобокса нет позиции выбора, а есть только текст. Выпадающий список для комбобокса - всего лишь вспомогательное средство заполнить текстовое поле
<lo-ru-tg> <Mike> и в принципе там может быть и значение вообще не из списка, в отличие от листбокса
<lo-ru-tg> <w​oodyfire> да, я начал впиливать в код
<lo-ru-tg> <w​oodyfire> Do
<lo-ru-tg> <w​oodyfire> так как мне нужно значение не то что видет пользователь, а то что имеется в массиве данных. К примеру идентификатор записи в СУБД к примеру или чего душа пожелает.
<lo-ru-tg> <w​oodyfire> Loop Until condition
<lo-ru-tg> <w​oodyfire> Block
JohnDoe_71Rus has quit [Ping timeout: 268 seconds]
JohnDoe_71Rus has joined #libreoffice-ru
JohnDoe_71Rus has quit [Quit: KVIrc KVIrc Aria 5.0.1, revision: 5.0.1+git-7433-0df9f22f2, build type: debug, sources date: 20160102, built on: 2019-12-08 19:19:20 UTC 5.0.1+git-7433-0df9f22f2 http://www.kvirc.net/]