|
|
|
CALL интерфейс в ЛИНТЕР
|
|||
|---|---|---|---|
|
#18+
Переносим приложения из Oracle в ЛИНТЕР. Есть табличка: PAR (PNAME VARCHAR(20), PVAL VARCHAR(50)) Читаю данные из неё: ... CHAR sql[]="SELECT PVAL FROM PAR WHERE PNAME='TEST'"; CHAR r[50]; ... err = LinterSLCT(&Cbl, PrzExe, sql, r, sizeof(r), NULL); Возвращает код ошибки 1014 (буффер маленький). Однако, если сделать CHAR r[52]; - то нормально. И результат приходится читать начиная со второго символа: r + 2 Почему такое происходит, может кто встречался? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2006, 20:08 |
|
||
|
CALL интерфейс в ЛИНТЕР
|
|||
|---|---|---|---|
|
#18+
Строки в C завершаются нулем. Достаточно определять буфер под текстовую переменную равным длина текста в БД плюс один. PAR (PNAME VARCHAR(20), PVAL VARCHAR( 50 )) CHAR sql[]="SELECT PVAL FROM PAR WHERE PNAME='TEST'"; CHAR r[ 50 + 1]; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2006, 20:31 |
|
||
|
CALL интерфейс в ЛИНТЕР
|
|||
|---|---|---|---|
|
#18+
Да нет :-) Там просто в первых двух байтах физически длина сидит. Возник встречный вопрос: почему CALL-интерфейс? Не будет ли удобней использовать что-то более высокого уровня: ODBC, LinAPI etc... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2006, 20:40 |
|
||
|
|

start [/forum/topic.php?fid=56&fpage=37&tid=2016445]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
46ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
46ms |
get tp. blocked users: |
1ms |
| others: | 232ms |
| total: | 365ms |

| 0 / 0 |
