Windows X64上的teechart冻结

Windows X64上的teechart冻结,teechart,delphi-10.1-berlin,Teechart,Delphi 10.1 Berlin,我使用以下代码冻结了我的应用程序,在Windows 64位上使用TChart TPointSeries 为了重现这个问题,我已经尽可能地简化了我的项目。 我只有一张带有t按钮的表格和一张带有t点系列的T形图。在按钮OnClick事件上,我有以下代码: {******************************************************************************} procedure TForm2.btnTestClick(Sender: TObje

我使用以下代码冻结了我的应用程序,在Windows 64位上使用TChart TPointSeries

为了重现这个问题,我已经尽可能地简化了我的项目。 我只有一张带有t按钮的表格和一张带有t点系列的T形图。在按钮OnClick事件上,我有以下代码:

{******************************************************************************}
procedure TForm2.btnTestClick(Sender: TObject);
var
  X1, Y1, X2 : double ;

begin
  X1 := 10.5 ;
  Y1 := 289 ;
  X2 := ( 10.5 * 9.81 * 821 ) / ( 821 * 9.81 ) ;

  Series1.AddXY( X1, Y1 ) ;
  Series1.AddXY( X2, Y1 ) ;

end;
{******************************************************************************}
问题只出现在为Windows 64位构建的项目中,在Windows 32位上一切都正常

如果我更改X2公式的值,或者用其结果替换公式,则不会出现问题

我需要让这个代码为X2公式的任何值工作,因为它是工程软件的一部分,公式成员是变量

有人能帮忙解决吗


谢谢你

我已将其添加到公共跟踪器:。
这里有一个可能的解决方法:

  Chart1.Axes.Bottom.Items.Automatic:=False;
  Chart1.Axes.Bottom.Items.Clear;
  Chart1.Axes.Bottom.Items.Add(X1, FormatFloat(Chart1.Axes.Bottom.AxisValuesFormat, X1));
  Chart1.Axes.Bottom.Items.Add(X2, FormatFloat(Chart1.Axes.Bottom.AxisValuesFormat, X2));
  Chart1.Axes.Bottom.SetMinMax(X1-0.5, X2+0.5);

谢谢你的解决方案,效果很好

在我的原始项目中,我在同一个图表上有两个和几个图表,以及几个系列,因此我编写了以下变通过程。我称之为所有轴自动状态,至少有一个系列使用。这在任何情况下都能解决问题

procedure ChartBug2059_Workaround( AAxis : TChartAxis ; 
                                   AAxisMin, AAxisMax : double ) ;
begin
    if IsAEqB( AxisMin, AxisMax ) then
    begin
        AAxis.Automatic:=False;
        AAxis.SetMinMax(AxisMin-0.5, AxisMax+0.5);
    end
    else
      AAxis.Automatic:=true;
end;

通常,这是因为项目中使用了一些32位的package/lib。您检查过了吗?