Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Использование функций библиотеки ОЛЕ. с документацией к функциям 
V
    Опции темы
ckopn
Дата 17.5.2007, 09:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 86
Регистрация: 20.3.2006

Репутация: нет
Всего: нет



У меня есть библиотека КОМ. Я ее подключил через референс. В обжект браузере нашел функцию.
она описывается так:
object LoadDistanceListCurX()
    Member of ax_distance.IDistance

Также у меня есть документация по каждой функции:
    LoadDistanceListCurX: OleVariant; 
грузит файл данных библиотеки из текущей папки, возвращает логическое успешности загрузки.

Я в событии формы Shown хочу ее выполнить. Но как бы я не старался студия не понимает мой код. 
Что это за тип OleVariant? 
Подскажите что делать, и что почитать.



PM MAIL   Вверх
ckopn
Дата 18.5.2007, 11:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 86
Регистрация: 20.3.2006

Репутация: нет
Всего: нет



Через watch вижу что Функция возвращает результат true.
PM MAIL   Вверх
ckopn
Дата 21.5.2007, 09:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 86
Регистрация: 20.3.2006

Репутация: нет
Всего: нет



В доке написано:
LoadDistanceListX(var sPath: OleVariant): OleVariant;
грузит файл данных библиотеки по указанному пути, если путь не назначен, срабатывает аналогично предыдущей.
я пишу код:
Код

if (openFileDialog1.ShowDialog() == DialogResult.OK)
            {
                string path = openFileDialog1.FileName;
                if ((bool)distanceClass.LoadDistanceListX(ref (object)path))
                { MessageBox.Show("vse ok");}
                else
                { MessageBox.Show("vse ploho");}
            }

сейчас выскакивает ошибка: Error    1    A ref or out argument must be an assignable variable

Студия выдает подсказку  (ref object sPath) при вводе параметров.
Как функции передать строку, что бы она поняла?
PM MAIL   Вверх
ckopn
Дата 22.5.2007, 10:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 86
Регистрация: 20.3.2006

Репутация: нет
Всего: нет



Вот так все заработало:
Код

                object a = openFileDialog1.FileName;
                if ((bool)distanceClass.LoadDistanceListX(ref a))
                { MessageBox.Show("База загружена"); }
                else
                { MessageBox.Show("База не загружена"); }


если в функцию передать openFileDialog1.FileName то не работает.
а ref убрать не получается - ругается компилятор.
PM MAIL   Вверх
ckopn
Дата 22.5.2007, 13:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 86
Регистрация: 20.3.2006

Репутация: нет
Всего: нет



Тип Varian может возвращать все что угодно.
Нужно через вотч посмотреть что он возвращает и потом дейстовать с ним как надо.
PM MAIL   Вверх
QryStaL
Дата 22.5.2007, 17:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Intellectual feast
**


Профиль
Группа: Участник
Сообщений: 914
Регистрация: 30.11.2005

Репутация: 14
Всего: 32



Цитата(ckopn @  22.5.2007,  10:39 Найти цитируемый пост)
Вот так все заработало


Это и есть правильный вариант. Твой метод LoadDistanceListX() принимает параметр типа object. Ты получаешь openFileDialog1.FileName, приводишь его к типу object, присваиваешь переменной и передаешь как параметр метода.


--------------------
I don't need a reason being who I am...
PM MAIL ICQ   Вверх
Naum
Дата 22.5.2007, 17:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 743
Регистрация: 7.9.2005
Где: Саратов, ул. Поса дского, 298

Репутация: 8
Всего: 15



Цитата(QryStaL @  22.5.2007,  18:22 Найти цитируемый пост)
приводишь его к типу object

А 
Цитата(ckopn @  21.5.2007,  10:09 Найти цитируемый пост)
(object)path)
 разве не то же самое делает?



--------------------
У нас всего два праздника Новый год и ТЯПница.
PM MAIL ICQ   Вверх
QryStaL
Дата 22.5.2007, 17:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Intellectual feast
**


Профиль
Группа: Участник
Сообщений: 914
Регистрация: 30.11.2005

Репутация: 14
Всего: 32



В данном случае тебе нужна переменная типа object, которая передается по ссылке (ref object).
(object)path не создает новую переменную, а приводит path к object.


--------------------
I don't need a reason being who I am...
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0945 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.