如何读取字符串,然后从文件中获取字符串作为值。 然后我需要将该值/字符串显示为TextEdit组件。
示例:
BHG | 22 | CLASS | 12345 ^ JOHN CARTER || 200 | Good | 155 ^ 200 |
BHG | 333 | CLASS | 23231 ^ AMIRA || 100 | BAD | 100 ^ 150 |
我需要基于'22'值在TextEdit1中获取字符串“ 200” 然后根据'333'的值在TextEdit2中获取字符串“ 100”。
答案 0 :(得分:4)
您可以使用Delimiter
中的DelimitedText
和TStringList
在几行中执行此操作
代码-见下文。
简而言之,一个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 :(得分:-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;
好吧,现在您要做的就是通过迭代数组的每个条目并将返回的值与所需的值进行比较,来构建条件以从数组中获取适当的值。