2013-03-19 2 views
1

Я использую 15 Sybase/12,5 с CS_VERSION_100Ct_param незаконное значение 0

Когда я пытаюсь использовать ct_param я получаю сообщение об ошибке:

An illegal value of 0 was placed in the status field of the CS_DATAFMT structure. 

Но я создать свою структуру с.

CS_DATAFMT datafmt; 
strcpy(datafmt.name, "@interface"); 
datafmt.namelen = 11; 
datafmt.datatype=CS_INT_TYPE; 
datafmt.maxlength=4; 
datafmt.status=CS_INPUTVALUE; 
datafmt.locale = NULL; 
datafmt.format = 0; 
datafmt.scale = -99999; 
datafmt.count = 1; 
datafmt.usertype=0; 

ct_param(command, &datafmt, /* value 300 */, 4, 0) 

Когда я сделать это с VARCHAR возвращает 1 (истина), но, конечно, он говорит мне, что я пытаюсь поставить VarChar параметров в месте ИНТ парам. я изменил до последней версии, и теперь кажется, Sybase получить значение состояния из .. MAXLENGTH теперь говорит мне, что значение равно 4. Если я изменить MaxLength 256 это работает ...

ответ

0

проблема была, я был компиляции для 64 бит, и каждая программа в Sybase 64 бит нужен -DSYB_LP64. Затем я составлял 64 бита, но типы sybase составляли 32 бита, затем sctruct запутывается.

0

похоже, что вы устанавливаете переменную возврата - согласно The Fine Manual вам нужно использовать CS_RETURN как datafmt.status, не CS_INPUTVALUE

+0

Нет, его ввод, его первый аргумент в процедуре – Lefsler

Смежные вопросы