CREON Plus

전체

Re : StockWeek 재질문입니다.

작성일
2020-02-21 오후 2:46:28
조회수
718
VC
운영
관**
오류 메시지
같은 날짜의 데이터만 반복 수신됨.

안녕하세요. Plus 담당자입니다.


VC 예제 코드를 일부 수정하여 아래와 같이 작성 해서 확인했습니다 

해당 서비스는 정상적으로 연속 처리되고 있습니다 

void CStockBidDlg::OnBnClickedButton1()
{
// TODO: Add your control notification handler code here
$업데이트$Data();
USES_CONVERSION;



//IDibPtr pStockWeek = NULL;
CString strErr = _T("통신에러: ");

// 종목코드 정상 확인
CString strCode = m_sCode;
if (strCode == "")
strCode = "A003540";
strCode.MakeUpper(); // 대문자로 만들기
if (strCode[0] != 'A')
strCode = "A" + strCode;


//IDibPtr pStockWeek;
CComPtr<DSCBO1Lib::IDib> pStockWeek = NULL;
HRESULT hr;

// 통신 객체 생성
if (!pStockWeek)
{
hr = pStockWeek.Co$크레이트$Instance(__uuidof(DSCBO1Lib::StockWeek));
if (FAILED(hr))
{
AfxMessageBox("(DSCBO1Lib::StockBid 생성 실패");
return;
}
}


CComVariant varInput = strCode;
pStockWeek->SetInputValue(0, varInput);


long lTotCnt = 0;
vector<STOCK_BID_ITEM> vtStockBid;
while (True)
{
hr = pStockWeek->BlockRequest();

if (FAILED(hr))
{
AfxMessageBox("BlockRequest 실패");
return;
}

if (0 != pStockWeek->GetDibStatus())
{
AfxMessageBox("통신 오류");
return;
}



int cntData = pStockWeek->GetHeaderValue(1); // 데이타 개수

CComVariant varDate, varClose;


STOCK_BID_ITEM item;

for (int i = 0; i < cntData; i++)
{
varDate = pStockWeek->GetDataValue(0, i);
varClose = pStockWeek->GetDataValue(4, i);


item.close = varClose.llVal;
item.date = varDate.llVal;

vtStockBid.push_back(item);
}

lTotCnt += cntData;
// 연속 통신 가능 여부 체크
long lCont;
pStockWeek->get_Continue(&lCont);
if (lCont == 0)
{
TRACE("연속 데이터 없음\n");
break;
}
TRACE("연속 데이터 있음\n");
if (lTotCnt > 500)
break;
}

vector<STOCK_BID_ITEM>::iterator it = vtStockBid.$비긴$();
for (; it != vtStockBid.end(); ++it)
{
TRACE("%d, %d\n", it->date, it->close);
}





}




감사합니다. 오늘도 좋은 하루되세요.

==================================================
아래에서 StockWeek 질문했던 사람입니다.

다시 디버깅해봐도 재수신시 같은 범위의 일자만 반복 수신됩니다.

일단 이전에는 한번에 36개가 아니라 몇백개 정도가 읽혔었는데... 그건 그렇다쳐도

지금은 한번 36개가 수신되어 BlockRequest()를 다시 할 경우
동일한 데이터가 반복해서 수신되서 더이상 진행이 안됩니다.

정확히 말씀드리자면 완전히 같은 날짜는 아니고
오늘 2/21일 수신시 기준으로 처음에는 첫데이터가 2020/2/21일 부터 수신되기 시작하고
그 다음부터는 반복적으로 2020/2/20일부터 36개만 수신됩니다.



소스 코드는 아래 올려드린대로 Continue 플래그를 검사해서 다시 BlockRequest()를
하는 방식으로 되어있습니다.

첨부파일
의견(0)

첨부파일을 PDF뷰어로 확인 하실수 있으며, PDF뷰어 미설치 고객께서는 우측 다운로드를 통해 설치 후 이용 가능 합니다.

PDF뷰어 다운로드

인쇄