Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 | 2 | 3 | 4 |

 

  Вопрос: Тупой вопрос по структурам Добавлено: 28.09.12 22:40  

Автор вопроса:  Dark Engine | Web-сайт: www.wentas.2bb.ru | ICQ: 343191665 

Ответить

  Ответы Всего ответов: 56  

Номер ответа: 31
Автор ответа:
 Mikle



Вопросов: 5
Ответов: 134
 Профиль | | #31 Добавлено: 06.10.12 22:08
Winand, поставь перед Function слово Private или Friend, если требуется видимость из других модулей, и прокатит без tlb.

Ответить

Номер ответа: 32
Автор ответа:
 Winand



Вопросов: 87
Ответов: 2795
 Web-сайт: winandfx.narod.ru
 Профиль | | #32
Добавлено: 06.10.12 23:17
Гм, пожалуй прав. Я конечно имел в виду разные классы, и здесь помогает Friend.
Вот только у меня имеется класс-интерфейс, и когда я его Implement(s)ирую, то доступны только Public методы.

Ответить

Номер ответа: 33
Автор ответа:
 Winand



Вопросов: 87
Ответов: 2795
 Web-сайт: winandfx.narod.ru
 Профиль | | #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
Чтобы максимально конкретизировать вопрос, приведу НЕРАБОЧИЙ кусок кода

Спасибо. Столь жесткой галиматьи не видел уже давно.
вопрос один в том, как можно обойти структуру

Вопрос не в этом.
Структуры являются строками таблиц. Под структуру необходимо создать таблицу в БД

Зачем? Всю жизнь для этого использовался рекордсет (датасет в нет). Как могло прийти в голову использовать структуры?
Но вообще всегда можно извернуться, и передавать VarPtr

Зачем? Передать можно что угодно, затем преорбазовать к нужной структуре через LSet.
Но вообще жутко неприличная порнография. Ведь специально же для таких целей появились рекордсеты - там тебе и коллекция всех полей, с именами и свойствами, и For Each и т.п. Нафига изобретать велосипед с треугольными колесами?

Ответить

Номер ответа: 35
Автор ответа:
 LamerOnLine



ICQ: 334781088 

Вопросов: 108
Ответов: 2822
 Профиль | | #35 Добавлено: 10.10.12 16:24
В vb.net вместо структур можно применить классы, унаследовав их все от общего MustInherit класса с нужными методами.

А при чем тут net? Классы с унаследованным интерфейсом можно использовать и в VB6 (объявив интерфейс в tlb и включив его через Implements). Либо вообще сделать исключительно визуальное сходство и использовать CallByName.
Но это такой же бред как и всё предыдущее.

Ответить

Номер ответа: 36
Автор ответа:
 Winand



Вопросов: 87
Ответов: 2795
 Web-сайт: winandfx.narod.ru
 Профиль | | #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-сайт: winandfx.narod.ru
 Профиль | | #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
А при чем тут net? Классы с унаследованным интерфейсом можно использовать и в VB6

Речь шла не о том, как использовать, а на чём писать.
Либо вообще сделать исключительно визуальное сходство и использовать CallByName

Это тоже позднее связывание.

Ответить

Номер ответа: 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
Создается tlb

На чём? На 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 версия) с открытыми исходниками?

Ответить

Страница: 1 | 2 | 3 | 4 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам