Подключение dll в Rational Robot
От: maslenisa  
Дата: 24.09.03 08:12
Оценка:
В Роботе пытаюсь вызвать диалог, с использованием dll, написанной на MV C++.
Диалог вызывается, даже возвращает результат, а вот когда я пытаюсь передать строку как параметр — ничего у меня не выходит.
Вопрос в следующем: Как вернуть строковую переменную?
Моя функция в dll:
int Test( char* f) \\ вызывает окно диалога выбора каталога.
{

AFX_MANAGE_STATE(AfxGetStaticModuleState());
HINSTANCE prev_hinst = AfxGetResourceHandle();
HMODULE hRes = GetModuleHandle("fl.dll");
if(hRes) AfxSetResourceHandle(hRes);

FileLang d; \\ диалог
d.DoModal();
strcpy(f,"d.m_Str"); \\ переменная, которая возвращает выбранный каталог
AfxSetResourceHandle(prev_hinst);
return 1;

}

Robot:
Declare Function Test Lib "FL.dll"(byref c as String) as Integer
...
Dim filename as String
dim c as integer
c = Test(filename)
Re: Подключение dll в Rational Robot
От: LIS  
Дата: 24.09.03 09:37
Оценка: 2 (1)
Здравствуйте, maslenisa, Вы писали:

M>Robot:

M>Declare Function Test Lib "FL.dll"(byref c as String) as Integer
M>...
M>Dim filename as String
M>dim c as integer
M>c = Test(filename)

Надо так


Dim filename as String * 256
Dim c As Integer

c = Test(filename)
Re[2]: Подключение dll в Rational Robot
От: maslenisa  
Дата: 24.09.03 10:19
Оценка:
Здравствуйте, LIS, Вы писали:

LIS>Здравствуйте, maslenisa, Вы писали:


LIS>
LIS>Dim filename as String * 256
LIS>Dim c As Integer

LIS>c = Test(filename)
LIS>


Сделала так, Robot упал. Может в dll должно быть не char*? Но что тогда?
Re[3]: Подключение dll в Rational Robot
От: LIS  
Дата: 26.09.03 05:56
Оценка: 2 (1)
Здравствуйте, maslenisa, Вы писали:

M>Здравствуйте, LIS, Вы писали:


LIS>>Здравствуйте, maslenisa, Вы писали:


LIS>>
LIS>>Dim filename as String * 256
LIS>>Dim c As Integer

LIS>>c = Test(filename)
LIS>>


M>Сделала так, Robot упал. Может в dll должно быть не char*? Но что тогда?


Забыл
Robot:
Declare Function Test Lib "FL.dll"(ByVal c as String) as Integer
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.