gpt4 book ai didi

delphi - 如何计算字符串网格中选定单元格的最小值,最大值和平均值?

转载 作者:行者123 更新时间:2023-12-03 18:37:36 25 4
gpt4 key购买 nike

我正在使用Delphi XE3,并且正在开发一个应用程序以从Excel中读取数值类型的单元格。我正在使用TStringGrid进行此导入。

我已经知道如何将它们放入字符串网格,但无法像Excel中那样做任何数学函数。如何计算字符串网格的选定单元格值的最小值,最大值和平均值?

最佳答案

您可以尝试以下功能。它返回在当前字符串网格的选择中找到的数值计数。要传递给它的声明参数,将从当前选择的数值返回最小,最大值和平均值(如果有的话):

uses
Math;

function CalcStats(AStringGrid: TStringGrid; var AMinValue, AMaxValue,
AAvgValue: Double): Integer;
var
Col, Row, Count: Integer;
Value, MinValue, MaxValue, AvgValue: Double;
begin
Count := 0;
MinValue := MaxDouble;
MaxValue := MinDouble;
AvgValue := 0;

for Col := AStringGrid.Selection.Left to AStringGrid.Selection.Right do
for Row := AStringGrid.Selection.Top to AStringGrid.Selection.Bottom do
begin
if TryStrToFloat(AStringGrid.Cells[Col, Row], Value) then
begin
Inc(Count);
if Value < MinValue then
MinValue := Value;
if Value > MaxValue then
MaxValue := Value;
AvgValue := AvgValue + Value;
end;
end;

Result := Count;
if Count > 0 then
begin
AMinValue := MinValue;
AMaxValue := MaxValue;
AAvgValue := AvgValue / Count;
end;
end;


这是一个示例用法:

procedure TForm1.Button1Click(Sender: TObject);
var
MinValue, MaxValue, AvgValue: Double;
begin
if CalcStats(StringGrid1, MinValue, MaxValue, AvgValue) > 0 then
Label1.Caption :=
'Min. value: ' + FloatToStr(MinValue) + sLineBreak +
'Max. value: ' + FloatToStr(MaxValue) + sLineBreak +
'Avg. value: ' + FloatToStr(AvgValue)
else
Label1.Caption := 'There is no numeric value in current selection...';
end;


另一章是在更改字符串网格的选择时如何获取通知。没有事件,也没有虚拟方法来实现像 OnSelectionChange这样的事件。但这将是另一个问题的话题。

关于delphi - 如何计算字符串网格中选定单元格的最小值,最大值和平均值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14447453/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com