0
- 25.05.2013 - 09:04
|
Встала проблемка, надо из приложения на C# обратиться к функции общего модуля (модуль имеет флажек вызов сервера). У функции экспорт стоит. пишу соединение: string server = "xxx"; string basename = "yyy"; string username = "zzz"; string password = "***"; string connectionString = String.Format("Srvr = {0**; Ref = {1**; Usr = {2**; Pwd = {3**", server, basename, username, password); object _V82Connector; object V82Base; Type V82Type; object[] connectargs = new object[1]; connectargs[0] = connectionString; V82Type = Type.GetTypeFromProgID("V82.COMConnector"); _V82Connector = Activator.CreateInstance(V82Type); V82Base = V82Type.InvokeMember("Connect", System.Reflection.BindingFlags.Public| System.Reflection.BindingFlags.Static| System.Reflection.BindingFlags.InvokeMethod, null, _V82Connector, connectargs); и далее затор.... как обратиться к функции общего модуля? пишу: string qwery = (string)V82Base.GetType().InvokeMember("НекийОбщий Модуль.глНекаяФункцияВозвращающаяСтроку()", System.Reflection.BindingFlags.Public| System.Reflection.BindingFlags.Static| System.Reflection.BindingFlags.InvokeMethod, null, V82Base, null); получаю ошибку... чувствую, решение где-то рядом, какой-то из аргументов функции надо маленько изменить, и что-то ничего на ум не приходит. видимо настолько этот код замылил глаза, что в упор не вижу какой-то очевидной вещи... Короче, СПАСИТЕ, ПОМОГИТЕ!!!! | |
1
- 26.05.2013 - 11:53
|
Где были мои глаза вчера? Что за фигню я написал? Короче. Надо было писать так (сперва создать ссылку на общий модулт, а потом только из него вызвать функцию): object common_module = V82Type.InvokeMember("НекийОбщий Модуль", System.Reflection.BindingFlags.GetProperty| System.Reflection.BindingFlags.InvokeMethod, null, V82Base, null); string qwery = (string) V82Type.InvokeMember("глНекаяФункцияВозвращающаяСт року", System.Reflection.BindingFlags.GetProperty| System.Reflection.BindingFlags.InvokeMethod, null, common_module, null); // тут вместо последнего null может стоять перечень аргументов вызываемой функции или процедуры в виде массива new object[] **"здесь переменные"** P.S. я всегда знал, общение с VBA до добра не доведет. VBA отучает строго следить за типами, флагами и вызовами. P.P.S. с глазами вообще хрень, что-то цветет и у меня глаза пунцовые как у зомбака... и все время чешутся... а от таблеток противоаллергических спишь все время... фигово-то как... | |
2
- 26.05.2013 - 13:56
| |
| Интернет-форум Краснодарского края и Краснодара |