【问题标题】:Importing a space delimited string to integers将空格分隔的字符串导入整数
【发布时间】:2019-04-17 14:22:03
【问题描述】:

我有一个 XML 文件,可以从中提取字符串到备忘录。字符串由空格分隔,例如"1 2 3 4 5 1223 2334 34 2 1" 但可以将数万个数字存储为单个字符串。 XML 文件是使用 XML 数据绑定向导导入的。

我试过下面的代码...

这部分似乎可以将字符串放入备忘录中...

var
    Joint: IXMLJointType;
    Torques: MyArrayType;
begin
    Joint := GetJoint(XMLDocument1);
    Memo1.Lines.DelimitedText := (Joint.Torquearray[0]); //import xml string to memo

这部分我似乎无法开始工作...将字符串拆分为整数。

    for I := 1 to Memo1.Lines.Count do
    begin
      Torques[I] := (strtoint(Memo1.Lines.Text)); //import strings to array as ints
  end;

编辑:这会引发错误,显示以“不是有效整数”结尾的字符串的垂直列表,例如

'1
2
3 
4 
5 
1223 
2334 
34 
2 
1' is not a valid integer

这些整数是我想用于绘图目的的传感器输出。

【问题讨论】:

  • 您至少应该说明它“不起作用”时的作用。至少,您需要更改for I := 0 to Memo1.Lines.Count - 1 do
  • 谢谢肯,我的问题已经修改。
  • Ken,您对范围错误是正确的。谢谢。
  • 为了获得更好的性能,请使用TStringList 而不是TMemo 来拆分整数。如果你想显示它们,你可以在之后将TStringList分配给TMemo

标签: arrays xml string delphi integer


【解决方案1】:

除了 Ken 提到的范围问题之外,您还试图转换备忘录中的整个文本而不是每一行。这应该有效:

for I := 0 to Memo1.Lines.Count - 1 do
begin
  Torques[I+1] := (strtoint(Memo1.Lines[I])); //import strings to array as ints
end;

【讨论】:

  • 您尝试转换备忘录中的整个文本是正确的。感谢您的帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-03-06
  • 2021-01-22
  • 2013-11-02
  • 1970-01-01
  • 2011-09-19
相关资源
最近更新 更多