powered by simpleCommunicator - 2.0.41     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / две функции одно название?
8 сообщений из 33, страница 2 из 2
две функции одно название?
    #39312576
MrShin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
13-й кварталСъем свою шляпу, если InStr(), например, не полиморфная функция
Конечно полиморфная. Имелось в виду классическое определение, когда для разных типов переменных выполняется разный код.
...
Рейтинг: 0 / 0
две функции одно название?
    #39312583
ROI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
13-й кварталПанург,

думаю.
Думай быстрей (нам интересно же).
Без сарказма.
...
Рейтинг: 0 / 0
две функции одно название?
    #39312972
Надумались пока что две мысли:
1) Если брать только VBA, надумал как сделать с квадратными скобками, например [MyFunc]() и [MyFunc$](), или MyFunc() и [MyFunc$](), но не MyFunc() и MyFunc$(). Пример прилагаю (см. процедуру Test). Там есть трюки с атрибутами, поэтому истинные тексты классов прилагаю отдельно (Predeclared будет доволен).
2) В библиотеке типов видно, что имена таких функций декорируются особым образом (ну, и имеют соответствующий тип результата):
Код: plaintext
1.
2.
3.
4.
5.
	Line 227:         BSTR _stdcall _B_str_Chr([in] long CharCode);
	Line 229:         VARIANT _stdcall _B_var_Chr([in] long CharCode);
	Line 231:         BSTR _stdcall _B_str_LCase([in] BSTR String);
	Line 233:         VARIANT _stdcall _B_var_LCase([in] VARIANT* String);
и т. д.

Хм, я ожидал чего-нибудь более мощного, вроде специального атрибута IDL. Надо написать свою DLL и библиотеку типов, посмотреть, что выйдет.
...
Рейтинг: 0 / 0
две функции одно название?
    #39313100
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
13-й квартал, пока это получается развитие мысли guest_rusimport 19690511 - 2 модуля (класса)=2 функции/процедуры. Плюс добавилась имитация обозначения строкового варианта с $.
К сожалению, пока это малоприменимо... Или я не понял?
...
Рейтинг: 0 / 0
две функции одно название?
    #39313814
Панург13-й квартал, пока это получается развитие мысли guest_rusimport 19690511 - 2 модуля (класса)=2 функции/процедуры. Плюс добавилась имитация обозначения строкового варианта с $.
К сожалению, пока это малоприменимо... Или я не понял?Да, два модуля (класса), но можно не специфицировать составной идентификатор (с точкой). Вопрос из чистого любопытства (не в защиту варианта) - малоприменимо почему?


Возвращаясь к вопросу "как это было сделано", моё предположене подтвердилось: VBA смотрит на префикс имени функции в библиотеке типов. Но совсем "как надо" сделать не получилось - хоть Object Browser и утверждает, что функции попали в Global Namespace, идентификатор приходится-таки писать составной, иначе - "Variable not defined". Дожать, наверное, можно, но это будет комбинация C/C++ и IDL (что, насколько я понимаю, тоже "не по ТЗ").
...
Рейтинг: 0 / 0
две функции одно название?
    #39313817
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
13-й кварталВопрос из чистого любопытства (не в защиту варианта) - малоприменимо почему?Вообще-то блажь конечно. но хотелось сделать свойства у класса возвращающие/принимающие одно и то же (визуально), но разных типов - True/False-"Yes"/"No", 1.2/2.0 - "1.2"/"2.0" и т.д. и подчеркнуть это соответствующим квалификатором (ну так хотелось, а вдруг!). Класс занимается парсингом/формированием особым образом структурированных текстовых файлов.
Была надежда на недокументированные способы. Ну и в познавательном аспекте...
...
Рейтинг: 0 / 0
две функции одно название?
    #39314577
guest_rusimport
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
возвращаясь к началу топика
Панург...есть функции с одинаковыми названиями (почти), но возвращающие/принимающие разные типы значений...

а если использовать неявное преобразование типов?
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
Function fff(ddd)
fff = ddd
Debug.Print TypeName(fff)
End Function

?fff(true)
Boolean
True
?fff(1.2)
Double
 1,2 
?fff("привет")
String
привет
?fff(123)
Integer
 123 
...
Рейтинг: 0 / 0
две функции одно название?
    #39314766
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
guest_rusimportвозвращаясь к началу топика
Панург...есть функции с одинаковыми названиями (почти), но возвращающие/принимающие разные типы значений...

а если использовать неявное преобразование типов?...В функциях такое прокатит вне сомнения, но в последнем посте я написал, что это надо для свойств ( Property ). А вот тут затык...
...
Рейтинг: 0 / 0
8 сообщений из 33, страница 2 из 2
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / две функции одно название?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]