動作環境
C++ builder XE4
TeeChart Lite v2013.08.130414
処理概要
- 時系列のデータがある
- データの欠損期間がある
- 折れ線グラフにする時に欠損期間の線を切断する
実装 (関数のみ)
void __fastcall CUtilGraph_backupSeries::cutLine_dataMissingPeriod(TDateTime addDt, double yval, int updateIntvl_sec, TFastLineSeries *dstPtr)
{
if (dstPtr == NULL) {
return;
}
if (dstPtr->XValues->Count == 0) {
// Count==0でXValues->Last()をコールするとメモリエラー「
// 「モジュール 'Tee9180.bpl'のアドレスXXXXでアドレスYYYYに対する読み取り違反がおきました。」
// になるため
return;
}
TDateTime preDt = dstPtr->XValues->Last();
int secBetwn = SecondsBetween(addDt, preDt);
if (secBetwn > (updateIntvl_sec * 1.5)) { // 1.5: インターバル秒で判断したとき、1秒のずれで失敗するため1.5倍と基準とする
dstPtr->AddNullXY(addDt, yval); // 線をつなげないための処理
}
}
欠損期間の判断となる[updateIntvl_sec]を指定して使う。
使用方法
TFastLineSeries に対してAddXY()を実行する前にcutLine_dataMissingPeriod()をコールする。