2

我正在尝试解析一个看起来完全像这样的字符串(sys)

-1|low
0|normal
1|high

我需要将它们配对在一个组合框中,例如,低是标题,-1 是值。做这个的最好方式是什么?到目前为止,我所拥有的是:

 var
 sys : String;
 InputLine : TStringList;

   InputLine := TStringList.Create;
   InputLine.Delimiter := '|';
   InputLine.DelimitedText := sys;
   Combobox1.items.AddStrings(InputLine);
   FreeAndNil(InputLine)

这给出了组合框的每一行:

 -1
 low
 0
 normal
 1
 high
4

1 回答 1

3

自己手动解析。

var
  SL: TStringList;
  StrVal: string;
  IntVal: Integer;
  Line: string;
  DividerPos: Integer;
begin
  SL := TStringList.Create;
  try
    SL.LoadFromFile('Whatever.txt');
    for Line in SL do
    begin
      DividerPos := Pos('|', Line);
      if DividerPos > 0 then
      begin
        StrVal := Copy(Line, DividerPos + 1, Length(Line));
        IntVal := StrToInt(Copy(Line, 1, DividerPos - 1));
        ComboBox1.Items.AddObject(StrVal, TObject(IntVal));
      end;
    end
  finally
    SL.Free;
  end;
end;

要从选定项目中检索值:

if (ComboBox1.ItemIndex <> -1) then
  SelVal := Integer(ComboBox1.Items.Objects[ComboBox1.ItemIndex]);
于 2013-02-13T00:39:47.743 回答