gpt4 book ai didi

delphi - 在 Delphi 中将不寻常的整数字符串转换为整数值

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

我有一个包含整数的字符串数组。我需要尽可能将它们转换为整数。

所以我喜欢:

if not TryStrToInt ( grid.Cells[columnIndex, i], integerValue ) then begin
errorsCount := errorsCount + 1;
errMemo.Lines.Add ( 'Column "' + fstColumn.Name + '" Line ' + IntTostr ( i ) + ' Value "' + grid.Cells[columnIndex, i] + '" must be integer.' );
end
else begin
{deal with integerValue}
end;

但是当 TryStrToInt 遇到诸如“10.0”、“11.00”等实际上是整数的数字时,它会返回 false,从而导致错误。 SysUtils.pas 中的 TryStrToInt 实现为:

function TryStrToInt(const S: string; out Value: Integer): Boolean;
var
E: Integer;
begin
Val(S, Value, E);
Result := E = 0;
end;

与任何其他字符串数字转换一样,它使用 Val

我只看到一个糟糕的解决方案,例如尝试将字符串转换为 float ,然后,如果成功,则将 float 转换为整数。但是好像很难看。还有其他标准方法吗?可能没有使用 Val。

UPD:我使用的是 Delphi XE5。

最佳答案

如果您要求只有零的小数部分的数字是有效的整数,您可以试试这个:

function MyStrToInt(const S: string; out Value: Integer): Boolean;
var
E: Integer;
RealValue: Real;
begin
Val(S, RealValue, E);
Result := (E = 0) and (Frac(RealValue) = 0);
if Result then Value := Trunc(RealValue);
end;

关于delphi - 在 Delphi 中将不寻常的整数字符串转换为整数值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46523188/

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