2

このように見える文字列(sys)を解析しようとしています

-1|low
0|normal
1|high

コンボ ボックスでそれらをペアにする必要があります。たとえば、low がキャプションで、-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 に答える