如何减少行数,我可以使用case?我觉得这段代码太大了,没办法改善吗?

      if valmes.Text = '01' then
      WebTesta.OleObject.Document.all.Item('expmonth', 0).value := '0';
      if valmes.Text = '02' then
      WebTesta.OleObject.Document.all.Item('expmonth', 0).value := '1';
      if valmes.Text = '03' then
      WebTesta.OleObject.Document.all.Item('expmonth', 0).value := '2';
      if valmes.Text = '04' then
      WebTesta.OleObject.Document.all.Item('expmonth', 0).value := '3';
      if valmes.Text = '05' then
      WebTesta.OleObject.Document.all.Item('expmonth', 0).value := '4';
      if valmes.Text = '06' then
      WebTesta.OleObject.Document.all.Item('expmonth', 0).value := '5';
      if valmes.Text = '07' then
      WebTesta.OleObject.Document.all.Item('expmonth', 0).value := '6';
      if valmes.Text = '08' then
      WebTesta.OleObject.Document.all.Item('expmonth', 0).value := '7';
      if valmes.Text = '09' then
      WebTesta.OleObject.Document.all.Item('expmonth', 0).value := '8';
      if valmes.Text = '10' then
      WebTesta.OleObject.Document.all.Item('expmonth', 0).value := '9';
      if valmes.Text = '11' then
      WebTesta.OleObject.Document.all.Item('expmonth', 0).value := '10';
      if valmes.Text = '12' then
      WebTesta.OleObject.Document.all.Item('expmonth', 0).value := '11';


例如:

case AnsiIndexStr(valmes.text, ['11', '12']) of
0: WebTesta.OleObject.Document.all.Item('expmonth', 0).value := '10';

最佳答案

只是一种改善代码的简单方法:

var
  ix: Integer;
...
ix := StrToInt(valmes.Text);
WebTesta.OleObject.Document.all.Item('expmonth', 0).value := IntToStr(ix-1);


您可以使用if TryStrToInt(valmes.Text,ix) then ...添加一些完整性检查。

10-06 02:35