减少线条,用例?

时间:2015-06-18 14:29:53

标签: delphi case

如何减少线条,我可以使用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';

1 个答案:

答案 0 :(得分:9)

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

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

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