мучаюсь с вектором
значит использую его так:
в 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.
Нужно ли выделять как то память под вектор?