Хакер писал(а):Мне кажется я выложил 3 примера, и TLB фигурирует только в одном...
Ну так я как раз про StandartEXE. В нём-то нельзя, получается.
Хакер писал(а):Остальное — уже пошёл оффтопик.
Удобно
Хакер писал(а):Мне кажется я выложил 3 примера, и TLB фигурирует только в одном...
Хакер писал(а):Остальное — уже пошёл оффтопик.
Qwertiy писал(а):Ну так я как раз про StandartEXE. В нём-то нельзя, получается.
Qwertiy писал(а):Удобно
Понятно Ну а как же твоя предполагаемая CreateNewUDT, которая будет делать udt на лету, не то что приватно, вообще нигде не объявленную? это не будет нарушать данный принцип?Хакер писал(а):нельзя, чтобы UDT, который покидает границы нашего приложения, был объявлен как приватный.
Ага. В джаваскрипте, кажется. Хотя уже много лет не пользовался, может и путаю.ger_kar писал(а):Это что объявленная внутри будет локальной процедурой, которую можно вызвать только из родительской процедуры?
Хакер писал(а):По вашему нужно было сделать так, чтобы в Standard EXE могли бы быть публичные сущности и была бы хранимая в ресурсах TLB? И чтобы тогда было два типа проекта (Standard EXE и ActiveX EXE), абсолютно ни чем друг-от-друга не отличающихся?
Хакер писал(а):Я привёл невозможность объявить одну функцию внутри другой как пример одной из тысячи вещей, которые сделать нельзя.
Хакер писал(а):ты из моего жалкого примера хочешь развить целую подветвь дискуссии с обсуждением других языков и лямда-функций. Не надо этого делать.
arthur2 писал(а):Понятно Ну а как же твоя предполагаемая CreateNewUDT, которая будет делать udt на лету, не то что приватно, вообще нигде не объявленную? это не будет нарушать данный принцип?
arthur2 писал(а):Насколько я понимаю, тип вариант - это ведь не чисто бейсиковская фича, а комовская?
arthur2 писал(а):А комовские возможности варианта шире, чем в бейсике, и ли те же?
В вариант вполне помещается приватный класс. То есть, класс, объявленный как приватный, может покидать границы нашего приложения. Почему же тогда такая дискриминация для структур?Хакер писал(а):нельзя, чтобы UDT, который покидает границы нашего приложения, был объявлен как приватный.
В вариант вполне помещается приватный класс. То есть, класс, объявленный как приватный, может покидать границы нашего приложения. Почему же тогда такая дискриминация для структур?
arthur2 писал(а):В вариант вполне помещается приватный класс. То есть, класс, объявленный как приватный, может покидать границы нашего приложения. Почему же тогда такая дискриминация для структур?
Dim a as Variant, b as Variant
a = b
Dim a As Variant, b As Variant
a = b
arthur2 писал(а):Почему же тогда такая дискриминация для структур?
arthur2 писал(а):И как именно структура помещается в вариант? видимо, как указатель? на что именно - на какой-то интерфейс (IRecordInfo)?
хм... прикольно А если я сам заполню все эти поля и сам реализую IRecordInfo, получается, смогу впихивать в вариант любой пользовательский тип? или я чего-то недопонял?Хакер писал(а):Первое поле VARIANT-структуры содержит идентификатор субтипа VT_USERDEFINED.
Второе поле VARIANT-структуры содержит указатель на сам хранимый UDT, то есть на блок байтов, являющихся полями UDT (подразумевается экземпляр)
Третье поле VARIANT-структуры содержит ссылку на интерфейс IRecordInfo, ответственный за UDT (подразумевается сам тип)
arthur2 писал(а):хм... прикольно А если я сам заполню все эти поля и сам реализую IRecordInfo, получается, смогу впихивать в вариант любой пользовательский тип? или я чего-то недопонял?
arthur2 писал(а):а затем по названию структуры вызывает соответствующий метод у IRecordInfo?
Dim v as Variant
v.foo = 2
б-р-р... по названию поля, хотел сказать В общем, кажется, понятно, как будет работать CreateDynamicUdtХакер писал(а):Почему по названию структуры?
arthur2 писал(а):В общем, кажется, понятно, как будет работать CreateDynamicUdt
О!!! Как раз только-только собирался спросить, как работает тёмичевский же кирпичХакер писал(а):Кстати, рекомендую ещё прочитать вот это, чтобы проникнуться идеей о хитрости VB.
Кстати, здоровский способ! Почему бы тебе не добавить его в свой топик об указателях?Хакер писал(а):Смотреть функции SaMap/SaUnmap
Можно применить Not(Not(pArray)), это имелось ввиду? Вроде бы баг, но какой замечательный, раньше тоже приходилось по всякому извращаться, пока здесь на форуме про эту фишку не прочиталХакер писал(а):и в котором не нужно будет вызывать AryPtr.
Да собственно ничем не отличается. Разница только в том, что для статического массива память распределяется сразу, массив находится на одном месте SAFEARRAY сразу указывает на это место, а переменная массива сразу содержит указатель на SAFEARRAY.arthur2 писал(а):Кстати, а чем отличается статический массив от динамического? Я имею ввиду изнутри - SAFEARRAY.
ger_kar писал(а):Можно применить Not(Not(pArray)), это имелось ввиду?
ger_kar писал(а):Разница только в том,
Хакер писал(а):Вы осознаёте, что это оффтопик и никак не относится к теме
В функцию можно передавать указатель на структуру (можно byref as any - с помощью твоего кирпича и переопределения функции через declare). Вторым параметром - идентификатор того, какая именно структура передана. А внутри функции можно работать со структурой как раз через указателемассив.CyberPunk писал(а):1.Как передать эти типы в одну переменную.
2. Как определить, какого типа переменная пришла на вход функции.
Хакер писал(а):Я не думаю, что какие-либо из моих кирпичей или трюков тут нужны.
А если, это разные, но конкретные структуры и вносить в них дополнительные поля просто нельзя?Хакер писал(а):Если это разные структуры, они могли бы включать в себя идентичную подструктуру, и аргумент функции должен бы был объявяться с типом этой самой подструктуры.
Офтоп-неофтоп, но всё-таки интересно...Хакер писал(а):Нет, разница в другом, касательно того аспекта, какой подметил Артур.
Сейчас этот форум просматривают: Google-бот, SemrushBot и гости: 16