如何读取字符串并从DELPHI中的stringlist获取值[关闭]

问题描述 投票:-2回答:2

如何读取字符串,然后从文件中获取String作为值。然后我需要将值/字符串显示到TextEdit组件中。

例:

BHG | 22 | CLASS | 12345 ^ JOHN CARTER || 200 |好| 155 ^ 200 |

BHG | 333 | CLASS | 23231 ^ AMIRA || 100 | BAD | 100 ^ 150 |

我需要在TextEdit1中根据'22'值获取字符串“200”,然后根据'333'值在TextEdit2中获取字符串“100”。

parsing delphi
2个回答
4
投票

您可以使用DelimiterDelimitedTextTStringList在几行代码中执行此操作 - 请参阅下文。

简而言之,TStringList就像一个可以通过索引引用的字符串数组。您可以通过设置分隔符的值来将输入字符串解析为数组,在您的情况下为“|”然后将输入字符串分配给其DelimitedText属性。

procedure TForm1.Button1Click(Sender: TObject);
var
  StringList : TStringList;
begin
  StringList := TStringList.Create;
  try
    StringList.Delimiter := '|';
    StringList.DelimitedText := 'BHG|22|CLASS|12345^JOHN CARTER||200|Good|155^200|';
    Edit1.Text := StringList[6];    //  Fills Edit1.Text with 200
  finally
    StringList.Free;
  end;
end;

-1
投票

虽然MartynA的回答使用TStringList将一个字符串分成单独的单词(很好的技巧,我应该注意到),我实现了另一种方法来执行相同的任务。请参阅下面的代码。

procedure TForm1.Button1Click(Sender: TObject);
var
  S, D, Res: String;
  Arr: Array of String;
  i: integer;
begin
  S := 'BHG|22|CLASS|12345^JOHN CARTER||200|Good|155^200|';
  D := '|';

  Res := '';
  for i:=Low(S) to High(S) do
    begin
      if S[i] <> D then
        Res := Res + S[i]
      else
        begin
          SetLength(Arr, Length(Arr) + 1);
          Arr[Length(Arr) - 1] := Res;
          Res := '';
        end;
    end;

  // Display each word to us
  for i:=Low(Arr) to High(Arr) do
    ShowMessage(Arr[i]);
end;  

好吧,现在你所要做的就是通过迭代每个条目并将返回值与所需条件进行比较来构建条件以从数组中获取适当的值。

© www.soinside.com 2019 - 2024. All rights reserved.