2016-03-30 13 views
0

Delphi 10に付属しているSeattle Subscription Update 1とTeeChart Standard v2015.15.150420を使用しています。TeeChart関数データソースを追加するとアクセス違反が発生する

新しいVCLアプリケーションの空白のフォームにTDBChartコンポーネントをドロップします。次に、フォームのOnCreateイベントのhttp://www.teechart.net/docs/teechart/vclfmx/tutorials/UserGuide/Tutorials/tutorial7.htm#AddFunctionにある「関数の追加」チュートリアルで概説したサンプルコードを使用します。このコードでは、すべてが正常に動作し、サンプル値が入力された2つの棒グラフと、2つの棒グラフの平均を表す1つの線分が得られます。

問題は、線分で表現された平均値が必要ではなく、たとえば棒グラフで表現したい場合に発生します。 TLineSeriesをTBarSeriesに変更してプログラムを実行すると、最初の棒グラフをデータソースとして関数シリーズ(tmpLineSeries)に追加すると、 "0x0066d665:読み取りアドレス0x00000198"になります。 tmpLineSeries.DataSources.Add(tmpBarSeries1);

ここに問題コードがあります(下記の「AV発生」を参照)。説明したように作業チュートリアルの例から変更のみのコードがあったことに注意してください、TBarSeriesに変更されていたtmpLineSeriesがTLineSeriesタイプの代わりに入力します。

procedure TForm1.FormCreate(Sender: TObject); 
var tmpBarSeries1, 
    tmpBarSeries2 : TBarSeries; 
    tmpLineSeries : TBarSeries; 
begin 
    //Add 2 data Series 

    tmpBarSeries1:=TBarSeries.Create(Self); 
    tmpBarSeries2:=TBarSeries.Create(Self); 

    DBChart1.AddSeries(tmpBarSeries1); 
    DBChart1.AddSeries(tmpBarSeries2); 

    //Populate them with data (here random) 
    tmpBarSeries1.FillSampleValues(10); 
    tmpBarSeries2.FillSampleValues(10); 

    //Add a series to be used for an Average Function 
    tmpLineSeries:=TBarSeries.Create(Self); 
    DBChart1.AddSeries(tmpLineSeries); 

    //Define the Function Type for the new Series 
    tmpLineSeries.SetFunction(TAverageTeeFunction.Create(Self)); 

    //Define the Datasource for the new Function Series 
    //Datasource accepts the Series titles of the other 2 Series 
    tmpLineSeries.DataSources.Clear; 
    tmpLineSeries.DataSources.Add(tmpBarSeries1); ////// AV occurs here!!! 
    tmpLineSeries.DataSources.Add(tmpBarSeries2); 

    // *Note - When populating your input Series manually you will need to 
    // use the Checkdatasource method 
    // - See the section entitled 'Defining a Datasource' 
    //Change the Period of the Function so that it groups averages 
    //every 2 Points 

    tmpLineSeries.FunctionType.Period := 2; 
end; 

TeeChartまたはIにかかわる問題であることのいずれかのようですLineSeriesには必要ないBarSeriesに必要な設定ステップがありません。

私が間違っていることを誰にでも見せることができますか、代わりにバグの回避策を提案できますか?私は理解しているように、これはデルファイ(私はすでにデルファイの最新アップデートになっています)をアップグレードすることによってのみ行うことができるため、この段階ではTeeChartの最新バージョンへのアップグレードはオプションではないと思います。 TeeChartのスタンドアロン版。

答えて

0

これは私のバグのようです。私はSteema Software's bugzillaにそれを加えました(bug #1484)。唯一の回避策は、TTeeFunction.Periodプロパティを0より大きい値に設定して、問題のコードが実行されないようにすることです。たとえば:

//workaround 
    tmpLineSeries.FunctionType.Period:=1; 

    tmpLineSeries.DataSources.Add(tmpBarSeries1); ////// AV occurs here!!! 
    tmpLineSeries.DataSources.Add(tmpBarSeries2); 

UPDATE:これは、次のTeeChartのリリースで修正されました。

+0

ありがとうございました!提案した回避策が機能します。バグを報告して修正してくれてありがとう。 –

関連する問題