Delphi 减少行,用例?

Delphi 减少行,用例?,delphi,case,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';

如何减少行数,我可以使用
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';
例:


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

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

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

这是改进代码的简单方法:

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

您可以使用
if TryStrToInt(valmes.Text,ix)然后…

添加一些健全性检查,它工作得很好,但就像我在本例中所做的那样。如果valano.Text='15',则WebTesta.OleObject.Document.all.Item('expyear',0)。值:='0'@所以添加一些代码来处理错误cases@RegisSantos我同意大卫·赫弗南的观点。您需要添加额外的验证代码以防止出现这种情况。当您的编辑可能不包含表示数值的字符串时,您还需要添加额外的验证代码。顺便说一句,下次当您像在代码中那样一个接一个地使用if语句时,我强烈建议您使用if…else if…else语句。为什么?在您的情况下,每个单独的if语句都将检查其条件是否满足。但对于if…else if,只要一个条件与所有其他条件匹配,就会被跳过。它工作得很好,但就像我在这个例子中所做的那样。如果valano.Text='15',则WebTesta.OleObject.Document.all.Item('expyear',0)。值:='0'@所以添加一些代码来处理错误cases@RegisSantos我同意大卫·赫弗南的观点。您需要添加额外的验证代码以防止出现这种情况。当您的编辑可能不包含表示数值的字符串时,您还需要添加额外的验证代码。顺便说一句,下次当您像在代码中那样一个接一个地使用if语句时,我强烈建议您使用if…else if…else语句。为什么?在您的情况下,每个单独的if语句都将检查其条件是否满足。但是如果一个条件中的if…else if一次匹配所有其他条件,则跳过。为什么使用TEdit来选择月份?你不能只使用列表吗?你为什么用TEdit来选择月份?你不能只使用列表吗?