| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Для новичков > Беда |
| Автор: Acer 2.11.2008, 20:47 | ||||
| Доброго времени суток. Подскажите, что я не правильно сделал. Вопрос в следующем: есть метод:
Если я внутри этого метода вывожу в консоль value, то значение есть все время. Если вызываю метод из вне, то значение есть через раз. Вызываю так:
Вот скриншоты, чтобы было понятнее... Это, когда вывожу value внутри метода getCellValue ![]() Это когда не в нем ![]() |
| Автор: Acer 3.11.2008, 14:51 |
| Help please |
| Автор: J0ker 3.11.2008, 18:14 |
| внутри функции эта переменная является указателем - и выводится она как указатель снаружи она объявлена как массив символов и передается на вывод как char* - т.е. строка. Если первый байт массива ==0, то естественно это конец строки |
| Автор: Acer 3.11.2008, 19:46 |
| логично... Но почему указатели есть везде, а вот строки через одну? |
| Автор: J0ker 3.11.2008, 20:27 |
| строки тоже везде есть только некоторые пустые - т.е. первый символ (индекс 0) содержит конец строки '\0' как я вижу вы передаете указатель на буфер в какую-то функцию, которая вероятно должна заполнить буфер строкой. Вероятно строка эта пустая. |
| Автор: Acer 3.11.2008, 20:33 |
| Значит бок не с указателями, а с SQL API... Где-то что-то недосмотрел. Спасибо |
| Автор: J0ker 3.11.2008, 20:52 |
| посмотрите поведение SQLGetData в случае недостаточного размера буфера может быть вариант, что если буфер слишком мал, то даже при наличии "чего вернуть" данная функция возвращает пустую строку для таких вещей я бы рекомендовал проверить, какой максимальный размер для данного типа отводится в БД - обычно эти размеры выводят в библиотеках в виде констант или дефайнов - и используйте буфер размером максимальный_размер+1 (+1 - для символа конца строки) |