Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.117.182.179] |
|
Страницы: (2) 1 [2] все ( Перейти к последнему сообщению ) |
Сообщ.
#16
,
|
|
|
извиняюсь ровно 50 строк выводит
|
Сообщ.
#17
,
|
|
|
Цитата kms @ извиняюсь ровно 50 строк выводит Причину понял? |
Сообщ.
#18
,
|
|
|
Цитата Олег М @ Цитата kms @ 13 минут назад сделал все по Вашей схеме выводит 52 строки (всего 130) и останавливается Естественно. Вот это что - gStart * 50? Здесь надо просто gStart Добавлено 2 минуты назад Цитата Олег М @ 3 минуты назад char *p = bufOut; // указатель на буфер Это не нужно Добавлено 1 минуту назад Цитата kms @ 13 минут назад pRecSize * razPak Вместо этого поставь setRazBuf Добавлено 1 минуту назад И проверяй err все сделал , даже работать стало быстрей , до этого я успевал глазом моргнуть а сейчас не успеваю , класс Добавлено Цитата Олег М @ Причину понял? да понял Добавлено теперьбы как бы эти пачки связать хоть даже в С++ со скролингом Добавлено а ну да вот Вы говорили еще можно в функцию вынести , точно щас попробую Добавлено Сделал по рабоче крестьянски int FetchRecords(int pOper , hcSqlDstInfoT *infCol , unsigned pRecSize , unsigned cntOut, int pCol) { int err; int razPak = 50; // размер пачкиСтрок int setRazBuf = pRecSize * razPak; // устанавливаем размер буфера char *bufOut = new char[setRazBuf]; // делаем буфер размером на 1 пачку for (int gStart = 0; ; gStart += razPak) // цикл по кол-ву пачек { if (err = hcSqlReadResults(pOper, gStart, bufOut, setRazBuf, &cntOut) != 0) break;//Чтение результатов for (char *p = bufOut, *end = p + cntOut; p < end; )// перебираем строки в пачке { for (int j = 0; j < pCol; j++) // перебираем колонки { switch (infCol[j].type) { case HSCLI_ET_CHAR: { // 0 Массив символов длиной не более заданной std::string s(p, infCol[j].len); std::cout << s.c_str() << " "; } break; case HSCLI_ET_ARRA: // 1 Массив байтов заданной длины std::cout << *reinterpret_cast<unsigned char *>(p) << " "; break; case HSCLI_ET_BYTE: // 2 Элемент - unsigned char (короткое целое) short std::cout << *reinterpret_cast<unsigned char *>(p) << " "; break; case HSCLI_ET_INTR: // 3 Элемент - signed short std::cout << *reinterpret_cast<signed short *>(p) << " "; break; case HSCLI_ET_WORD: // 4 Элемент - unsigned short std::cout << *reinterpret_cast<unsigned short *>(p) << " "; break; case HSCLI_ET_DATE: // 5 Дата - unsigned short std::cout << *reinterpret_cast<unsigned short *>(p) << " "; break; case HSCLI_ET_NMBR: //6 Номер - 3-х байтовое целое без знака // std::cout << *reinterpret_cast< *>(p); break; case HSCLI_ET_LONG: //7 Элемент - long int std::cout << *reinterpret_cast<long int *>(p) << " "; break; case HSCLI_ET_DWRD: // 8 Элемент - unsigned long int в БД это dword std::cout << *reinterpret_cast<unsigned long int *>(p) << " "; break; case HSCLI_ET_FLOA: // 9 Элемент - float std::cout << *reinterpret_cast<float *>(p) << " "; break; case HSCLI_ET_CURR: // 10 Деньги (double) std::cout << *reinterpret_cast<double *>(p) << " "; break; case HSCLI_ET_DFLT: // 11 Элемент - double std::cout << *reinterpret_cast<double *>(p) << " "; break; case HSCLI_ET_QINT: // 12 Элемент - signed __int64 std::cout << *reinterpret_cast<signed __int64 *>(p) << " "; break; case HSCLI_ET_QWRD: // 13 Элемент - unsigned __int64 std::cout << *reinterpret_cast<unsigned __int64 *>(p) << " "; break; } p += infCol[j].len; } std::cout << std::endl; } if (cntOut < setRazBuf) break; } return 0; } ну зато хоть удобней смотреть |
Сообщ.
#19
,
|
|
|
Цитата kms @ Сделал по рабоче крестьянски И что ты планируешь с ней делать? Тебе нужно чтобы она как-то данные возвращала, для последующей обработки. Цитата kms @ char *bufOut = new char[setRazBuf]; // делаем буфер размером на 1 пачку Буфер ты так и не удаляешь |
Сообщ.
#20
,
|
|
|
Цитата Олег М @ И что ты планируешь с ней делать? Тебе нужно чтобы она как-то данные возвращала, для последующей обработки. да , чето я уже загнался , сегодня уже спать хочу , завтрадоделаю отпишусь Добавлено Цитата Олег М @ Буфер ты так и не удаляешь забыл , уже поправил |