Преобразование алгоритма программы с линейной структурой в классы - вопрос №2387351

Имеется код на С++ (консольное приложение CLR в MSVS2015C++ ) требуется помощь в преобразовании этого кода в классы
#define HYCFG_WIN32
#include «hscli.h»
#include <iostream>
#include <memory>
using namespace std;
int main() {
setlocale(LC_ALL, «RUS»); // рус локаль
hcERR err = 0; // Для кода ошибки
hcHDB pdb = 0; // Адрес памяти, куда будет записан идентификатор соединения.
double bufAttr = 0; // буфер Атрибутов
unsigned cntAttr = 0; // и сколько байтов записали в этот буфер
hcHSTMT pOper = 0; // Адрес памяти, куда будет записан идентификатор оператора.
int pCol = 0; // кол-во колонок
hcRECNO pStr = 0; // кол-во строк
unsigned cntOp = 0; // Размер считанной информации в байтах.
unsigned pRecSize = 0; // Размер читаемой записи в байтах.
unsigned cnt = 0; // количество байтов данных, помещённых в буфер пользователя. Если это количество разделить на длину записи, то получим количество считанных записей.Неполные записи не присылаются.
char bufOut[1024] ;
unsigned cntOut = 0 ;
hcSqlParmT Init = { sizeof(Init) }; // Адрес структуры с параметрами инициализации
err = hcSqlInit(&Init); // Инициализация клиентской части
err = hcSqlCheckInit(); // Проверка завершения инициализации
err = hcSqlAllocConnect(&pdb); // Создать соединение
err = hcSqlGetConnectAttr(pdb, HSCLI_CONN_SRV_VERS, 0, &bufAttr, sizeof(bufAttr), &cntAttr); // Получить информацию о соединении
err = hcSqlConnect(pdb, «tcpip:/localhost:13000», «HTADMIN», «PASSWORD»); //Установить связь с СУБД
err = hcSqlAllocStmt(pdb, &pOper); // Создать оператор
err = hcSqlExecDirect(pOper, «fix all; select * from GROUP;»); // Выполняем SQLзапрос
err = hcSqlNumResultCols(pOper, &pCol); // Получить кол-во колонок результата
err = hcSqlRowCount(pOper, &pStr); // Получить кол-во строк результата
hcSqlDstInfoT *Kol = new hcSqlDstInfoT[pCol]; // Структура Информация о колонке результата
err = hcSqlGetStmtAttr(pOper, HSCLI_STMT_DST_INFO, 0, Kol, 4 * sizeof(hcSqlAliasInfoT), &cntOp);// Получить информацию об операторе
err = hcSqlOpenResults(pOper, &pRecSize); // Открытие результатов для чтения
unique_ptr<char[]> buf(new char[pRecSize]);
err = hcSqlGetStmtAttr(pOper, HSCLI_STMT_DST_INFO, 0, Kol, pCol * 4 * sizeof(hcSqlAliasInfoT), &cntOp);// Получить информацию об операторе
for (long i = 0; i < pStr; i++)//идем по строкам
{
const auto err = hcSqlReadResults(pOper, i, bufOut, sizeof(bufOut), &cntOut);// Чтение результатов
char *p = bufOut;
for (size_t j = 0; j < cntOut / sizeof(hcSqlAliasInfoT); ++j)// идем по колонкам
{
switch (Kol[j].type)// в зависимости от типа колонки преобразовываем в соответствующий тип
{
case HSCLI_ET_CHAR: // 0 Массив символов длиной не более заданной
{
std::string s(p, Kol[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 += Kol[j].len;
}
std::cout << std::endl ;
}
hcSqlCloseResults(pOper); // Закрытие доступа к результатам
hcSqlFreeConnect(pdb); // Освободить соединение
hcSqlDone(); // Завершение работы
std::system(«pause»);
}
27.03.17
1 ответ

Ответы

Здравствуйте.
На платной основе сделаю.
27.03.17
Посмотреть всех экспертов из раздела Технологии > C/C++
Пользуйтесь нашим приложением Доступно на Google Play Загрузите в App Store