Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / char в char* / 8 сообщений из 8, страница 1 из 1
24.11.2004, 16:25
    #32798420
surkalex
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
char в char*
Добрый день!

Есть такая проблема, я сделал dll для Oracle на C. Вопрос вот такой, внутри dll я получаю некую структуру, где все ее составлющие представлены типа char, а выходные параметры представлены идут как char*, я делаю след образом:

par1 = &(MyStruct.par1);

но в Оракл вдается полная лабуда, как быть? как char передать через char*
...
Рейтинг: 0 / 0
24.11.2004, 16:34
    #32798444
zalexaka
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
char в char*
Пример (краткий) в студию...
...
Рейтинг: 0 / 0
24.11.2004, 17:01
    #32798509
surkalex
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
char в char*
В смысле краткий???
структура:
typedef struct
{
char par1;
char par2;
} tstruct;

моя функция в dll

long __declspec(dllexport) MyFunc( void *p_ctx,
char* par1,
short par1_len
)
{
tstruct MyStruct;
FillStruct(&MyStruct) ;
par1 = &(MyStruct.par1);
}

вот полный пример.
и в PL\SQL Developer, после выполнения external procedure , возвращается в par1 какая то лабуда.
...
Рейтинг: 0 / 0
24.11.2004, 17:10
    #32798534
zalexaka
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
char в char*
MyStruct в вашем случае локальная переменная и на что будет указывать par1
после выхода её(MyStruct) из области видимости-- одному богу известно :)
Если par1 указывает на уже распределённую память до вызова MyFunc то лучше скопировать содержимое памяти MyStruct.par1 в память указываемую par1.
Вот как-то так :)
Удачи
...
Рейтинг: 0 / 0
24.11.2004, 17:15
    #32798548
zalexaka
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
char в char*
zalexakaЕсли par1 указывает на уже распределённую память до вызова MyFunc
если нет то распределять память самому(правда возникает вопрос - кто будет освобождать)
глобальный буфер в данном случае(многопоточность) неприменим
...
Рейтинг: 0 / 0
24.11.2004, 17:16
    #32798550
surkalex
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
char в char*
пробовал и так

strcpy(par1, &(MyStruct.par1));

всеравно тоже самое. :(
...
Рейтинг: 0 / 0
24.11.2004, 18:11
    #32798636
softwarer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
char в char*
surkalexно в Оракл вдается полная лабуда, как быть? как char передать через char*
В Oracle Application Developer's Guide этот вопрос рассмотрен довольно подробно. Суть - память надо выделять через функцию OCI, возвращающую память из контекста сессии.

Подробно прокомментированные примеры, если не изменяет память, есть в книге Кайта.
...
Рейтинг: 0 / 0
30.11.2004, 18:14
    #32806473
Man555
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
char в char*
а какой компилятор? если пишешь на чистом C тогда простительно, если на С++, то используй stl::basic_string, и будет тебе счастье.
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / char в char* / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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