|
무식장이 님이 쓰신 글 :
이거 땜시 3일째 헤매고 있습니다.
근데 허무하게 해결되었네요. 이유는 모르겠습니다.
for loop안에서 qrData->Next()의 위치를 옮겼더니 에러가 안나네요.
다른건 하나도 안고치고요.
이렇게요.
.....
str_linenum=qrData->Fields->FieldByName("Line_Num")->AsString;
str_ordercode=qrData->FieldByName("Order_Code")->AsString;
str_goodscode=qrData->FieldByName("Goods_Code")->AsString;
str_dividecode=qrData->FieldByName("Divide_Code")->AsString;
str_goodsprice=qrData->FieldByName("Goods_Price")->AsString;
str_goodsvalue=qrData->FieldByName("Goods_Value")->AsString;
str_price=qrData->FieldByName("Price")->AsString;
str_goodstax=qrData->FieldByName("Goods_TAX")->AsString;
str_totalprice=qrData->FieldByName("Total_Price")->AsString;
str_pv=qrData->FieldByName("PV")->AsString;
str_bv=qrData->FieldByName("BV")->AsString;
str_canceltype=qrData->FieldByName("Cancel_Type")->AsString;
//여기로 옮기니까 잘됩니다. 씨발
qrData->Next();
sprintf(.....
무슨 이유때문인지는 모르겠지만 제 실수 같지는 않거든요.
이유를 아시는 분 계시면 부디 알려주시기 바랍니다.
: 무식장이 님이 쓰신 글 :
: : sprintf(Order_Num,"%20s",qrData->FieldByName("Order_Code")->AsString.c_str());
: :
: : 멀쩡한 건데 계속 EAccess Violation 나네요.
: :
: : 어이가 없어서 에러나는 부분만 복사해다가 테스트 해보니 잘됩니다.
: : 이상해서 sprintf를 strcpy로 바꿔서 해보니까 또 잘되고.
: : 다시 sprintf로 고치니까 또 에러나길래 다시 strcpy로 바꾸니까 이번엔 EAccess Violation
: : 나네요.
: :
: : 도대체 뭣 때문에 이럴까요. 고수분들의 지적바랍니다.
:
: 이거 진짜 골때리네요.
:
: 리플달아 주신 분 말대로 AnsiString 변수 선언하고 거기다 넣어서 그변수로
: sprintf를 쓰니까 그부분은 에러가 안나는데 qrData->Next();에서 에러가 납니다.
:
: int dcnt=0;
: AnsiString ddata;
:
: qrData->First();
:
: for(;!qrData->Eof;)
: {
: memset(Line_Num,0x00,sizeof(Line_Num));
: memset(Order_Num,0x00,sizeof(Order_Num));
: memset(Goods_Code,0x00,sizeof(Goods_Code));
: memset(Divide_Code,0x00,sizeof(Divide_Code));
: memset(Goods_Price,0x00,sizeof(Goods_Price));
: memset(Goods_Value,0x00,sizeof(Goods_Value));
: memset(Price,0x00,sizeof(Price));
: memset(Goods_TAX,0x00,sizeof(Goods_TAX));
: memset(Total_Price,0x00,sizeof(Total_Price));
: memset(PV,0x00,sizeof(PV));
: memset(BV,0x00,sizeof(BV));
: memset(Cancel_Type,0x00,sizeof(Cancel_Type));
:
: str_linenum=qrData->Fields->FieldByName("Line_Num")->AsString;
: str_ordercode=qrData->FieldByName("Order_Code")->AsString;
: str_goodscode=qrData->FieldByName("Goods_Code")->AsString;
: str_dividecode=qrData->FieldByName("Divide_Code")->AsString;
: str_goodsprice=qrData->FieldByName("Goods_Price")->AsString;
: str_goodsvalue=qrData->FieldByName("Goods_Value")->AsString;
: str_price=qrData->FieldByName("Price")->AsString;
: str_goodstax=qrData->FieldByName("Goods_TAX")->AsString;
: str_totalprice=qrData->FieldByName("Total_Price")->AsString;
: str_pv=qrData->FieldByName("PV")->AsString;
: str_bv=qrData->FieldByName("BV")->AsString;
: str_canceltype=qrData->FieldByName("Cancel_Type")->AsString;
:
: sprintf(Line_Num,"%4s",str_linenum.c_str());
: sprintf(Order_Num,"%20s",str_ordercode.c_str());
: sprintf(Goods_Code,"%10s",str_goodscode.c_str());
: sprintf(Divide_Code,"%9s",str_dividecode.c_str());
: sprintf(Goods_Price,"%11s",str_goodsprice.c_str());
: sprintf(Goods_Value,"%4s",str_goodsvalue.c_str());
: sprintf(Price,"%11s",str_price.c_str());
: sprintf(Goods_TAX,"%11s",str_goodstax.c_str());
: sprintf(Total_Price,"%11s",str_totalprice.c_str());
: sprintf(PV,"%11s",str_pv.c_str());
: sprintf(BV,"%11s",str_bv.c_str());
: sprintf(Cancel_Type,"%1s",str_canceltype.c_str());
:
: ddata+=String(Line_Num)+String(Order_Num)+String(Goods_Code)
: +String(Divide_Code)+String(Goods_Price)+String(Goods_Value)
: +String(Price)+String(Goods_TAX)+String(Total_Price)+String(PV)
: +String(BV)+String(Cancel_Type);
:
: qrData->Next(); <=여기서 Eaccess violation납니다.
: ++dcnt;
: }
|