вектор
От: alexey_mas  
Дата: 17.11.06 16:48
Оценка: :)
мучаюсь с вектором
значит использую его так:

в main.h :

struct Customer
{
Customer()
{
  idcustomer=0,
  surname=0,
  name=0,
  midname=0,
  birthday=0,
  doc_type=0 ,
  doc_seria=0 ,
  doc_number=0,
  doc_dtget=0,
  doc_from=0,
  full_name=0,
  resident=0,
  country=0,
  codeokpo=0,
  dt_open=0,
  town=0,
  address=0;
}

int idcustomer;
String surname;
String name;
String midname;
DATE birthday;
int doc_type;
String doc_seria;
String doc_number;
DATE doc_dtget;
String doc_from;
String full_name;
String resident;
int country;
String codeokpo;
DATE dt_open;
String town;
String address;
};

typedef vector<Customer> v;


в main.cpp


v global_vect; 

void __fastcall TForm2::Button1Click(TObject *Sender)
{
global_vect.clear();

int i,j;
      int k=0;
      global_vect.push_back(Customer());

            if (PQntuples(res)>0)
          {

        for (i = 0; i < PQntuples(res); i++)
            {
            if (i>18) {break;}  //добавил чтобы не вылетало

         for (j = 0; j < PQnfields(res); j++)
                   {
                   k++;
                     switch(j)
                        {
                         case 0:
                       global_vect[k].idcustomer=StrToInt(PQgetvalue(res, i, j));
                         break;
                         case 1:
                       global_vect[k].surname=PQgetvalue(res, i, j);
                         break;
                         case 2:
                       global_vect[k].name=PQgetvalue(res, i, j);
                         break;
                         case 3:
                        global_vect[k].midname=PQgetvalue(res, i, j);
                         break;
                         case 4:
                       //global_vect[k].birthday=(PQgetvalue(res, i, j));
                         break;
                         case 5:
                         global_vect[k].doc_type=StrToInt(PQgetvalue(res, i, j));
                         break;
                         case 6:
                         global_vect[k].doc_seria=PQgetvalue(res, i, j);
                         break;
                         case 7:
                         global_vect[k].doc_number=PQgetvalue(res, i, j);
                         break;
                         case 8:
                        // global_vect[j].doc_dtget=PQgetvalue(res, i, j);
                         break;
                         case 9:
                         global_vect[k].doc_from=PQgetvalue(res, i, j);
                         break;
                         case 10:
                         global_vect[k].full_name=PQgetvalue(res, i, j);
                         break;
                         case 11:
                         global_vect[k].resident=PQgetvalue(res, i, j);
                         break;
                         case 12:
                         global_vect[k].country=StrToInt(PQgetvalue(res, i, j));
                         break;
                         case 13:
                         global_vect[k].codeokpo=PQgetvalue(res, i, j);
                         break;
                         case 14:
                      // global_vect[k].dt_open=PQgetvalue(res, i, j);
                         break;
                         case 15:
                         global_vect[k].town=PQgetvalue(res, i, j);
                         break;
                         case 16:
                         global_vect[k].address=PQgetvalue(res, i, j);
                         break;
                      }
                    }
            }
          }
}


Если вот эту строку убрать if (i>18) {break;}
то при строках больше 18 при операции global_vect[k].codeokpo=PQgetvalue(res, i, j);
вылетает с ошибкой Access violation. при этом k=340.


Нужно ли выделять как то память под вектор?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.