Страница: 1 | 2 | 3 | 4 |
Вопрос: Тупой вопрос по структурам
Добавлено: 28.09.12 22:40
Автор вопроса: Dark Engine | Web-сайт:
Ответы
Всего ответов: 56
Номер ответа: 31
Автор ответа:
Mikle
Вопросов: 5
Ответов: 134
Профиль | | #31
Добавлено: 06.10.12 22:08
Winand, поставь перед Function слово Private или Friend, если требуется видимость из других модулей, и прокатит без tlb.
Номер ответа: 32
Автор ответа:
Winand
Вопросов: 87
Ответов: 2795
Web-сайт:
Профиль | | #32
Добавлено: 06.10.12 23:17
Гм, пожалуй прав. Я конечно имел в виду разные классы, и здесь помогает Friend.
Вот только у меня имеется класс-интерфейс, и когда я его Implement(s)ирую, то доступны только Public методы.
Номер ответа: 33
Автор ответа:
Winand
Вопросов: 87
Ответов: 2795
Web-сайт:
Профиль | | #33
Добавлено: 06.10.12 23:35
Ну да. Наследованиев те времена было в зайчаточном состоянии Но вообще всегда можно извернуться, и передавать VarPtr
Friend properties and methods are not part of a class's interface. Also, they don't appear in the type library of the class, and they aren't included when you implement an interface using the Implements keyword.
Номер ответа: 34
Автор ответа:
LamerOnLine
ICQ: 334781088
Вопросов: 108
Ответов: 2822
Профиль | | #34
Добавлено: 10.10.12 16:16
Спасибо. Столь жесткой галиматьи не видел уже давно.
Вопрос не в этом.
Зачем? Всю жизнь для этого использовался рекордсет (датасет в нет). Как могло прийти в голову использовать структуры?
Зачем? Передать можно что угодно, затем преорбазовать к нужной структуре через LSet.
Но вообще жутко неприличная порнография. Ведь специально же для таких целей появились рекордсеты - там тебе и коллекция всех полей, с именами и свойствами, и For Each и т.п. Нафига изобретать велосипед с треугольными колесами?
Номер ответа: 35
Автор ответа:
LamerOnLine
ICQ: 334781088
Вопросов: 108
Ответов: 2822
Профиль | | #35
Добавлено: 10.10.12 16:24
А при чем тут net? Классы с унаследованным интерфейсом можно использовать и в VB6 (объявив интерфейс в tlb и включив его через Implements). Либо вообще сделать исключительно визуальное сходство и использовать CallByName.
Но это такой же бред как и всё предыдущее.
Номер ответа: 36
Автор ответа:
Winand
Вопросов: 87
Ответов: 2795
Web-сайт:
Профиль | | #36
Добавлено: 10.10.12 16:26
передать можно что угодно? нельзя в паблик процедуре объектного модуля в качестве аргумента указать паблик UDT. Вот Mikle говорит, что можно использовать Friend, но тут опять ограничения. И к тому же, я бы не сказал, что varptr+copymemory сильно отличается от LSet, зато однозначно гибче в использовании, хотя и опаснее.
На самом деле меня эта тема заинтересовала, ибо решил на досуге побаловаться с бейсиком на тему: что было бы, если я бы в прошлом знал принципы шаблона MVC. Вывод таков: всё было бы лучше.
Номер ответа: 37
Автор ответа:
LamerOnLine
ICQ: 334781088
Вопросов: 108
Ответов: 2822
Профиль | | #37
Добавлено: 10.10.12 16:36
С чего бы это вдруг нельзя передавать UDT? Объявляй его в tlb - и передавай куда и как хочешь.
Если бы задача не была такой бредовой и не решалась рекордсетом на раз - можно было бы использовать классы с имплеменченым интерфейсом. Но ума не приложу зачем это в данном случае.
Номер ответа: 38
Автор ответа:
Winand
Вопросов: 87
Ответов: 2795
Web-сайт:
Профиль | | #38
Добавлено: 10.10.12 17:04
LamerOnLine, какой наиболее простой способ создания тлбшников?
Номер ответа: 39
Автор ответа:
LamerOnLine
ICQ: 334781088
Вопросов: 108
Ответов: 2822
Профиль | | #39
Добавлено: 10.10.12 17:11
Что значит простой? Как удобнее так и создавай.
Я привык к midl.
А вообще, как известно, VB сам генерит библиотеку типов, "приклеивая" её к dll. Если это не подходит - куда уж проще мидла?
Номер ответа: 40
Автор ответа:
Mikle
Вопросов: 5
Ответов: 134
Профиль | | #40
Добавлено: 10.10.12 18:34
LamerOnLine
Речь шла не о том, как использовать, а на чём писать.
Это тоже позднее связывание.
Номер ответа: 41
Автор ответа:
LamerOnLine
ICQ: 334781088
Вопросов: 108
Ответов: 2822
Профиль | | #41
Добавлено: 11.10.12 13:51
Значит речь шла некорректно. Ибо "вместо структур можно применить классы, унаследовав их все от общего MustInherit класса с нужными методами" справедливо и для VB6. Конкретнизировать что это можно именно в vb.net не стоит.
И что? Проблема данной "разработки" не в задержках вызовов, вызванных поздним связованием, а в бестолковой архитектуре. По сравнению с этим всем остальным можно пренебречь.
Номер ответа: 42
Автор ответа:
Mikle
Вопросов: 5
Ответов: 134
Профиль | | #42
Добавлено: 11.10.12 14:10
Напиши мне на VB6 пример, как ты наследуешь классы от одного общего MustInherit.
Номер ответа: 43
Автор ответа:
LamerOnLine
ICQ: 334781088
Вопросов: 108
Ответов: 2822
Профиль | | #43
Добавлено: 11.10.12 16:44
Я уже выше писал про это. Создается tlb, описывающая интерфейс, реферитса и имплементится. Каждый класс, который будет имплементить этот интерфейс, будет его реализовывать. Это есть COM наследование интерфейса. Фактически - наследование от пустого абстрактного класса.
Номер ответа: 44
Автор ответа:
Mikle
Вопросов: 5
Ответов: 134
Профиль | | #44
Добавлено: 11.10.12 20:07
На чём? На VB6? Единственный способ создать его на VB6 - написать ActiveX DLL, допустим мы написали класс, понятно, что MustInherit средствами VB6 не сделаешь, но этоне существенная деталь. Вопрос - как наследовать? Писать вторую DLL, используя первую? Это можно, но КАК НАСЛЕДОВАТЬ? Как сделать так, чтобы объявив в использующей программе переменную As Class1 мы спокойно присвивали ей значение Class2? Всё равно без всяких As Object, As Variant, CallByName не получится.
Номер ответа: 45
Автор ответа:
Artyom
Разработчик
Вопросов: 130
Ответов: 6602
Профиль | | #45
Добавлено: 12.10.12 06:39
кто-нибудь подскажет интерпретатор C# (пойдет 4 версия) с открытыми исходниками?