要用到如下形式的代码,但是,LED1一直到LED24,一个个赋值的话我感觉很费劲,能不能宏定义,把LED跟后面的数字分开,然后用循环来操作,在C++中好像是##把两个字符连一起,DELPHI中要怎么操作呢?   
    Fields.Fields[1].AsString := LED1Box.Text;
    Fields.Fields[2].AsInteger := LED1PositiveSign.ItemIndex;
    Fields.Fields[3].AsInteger := LED1CurrentSign.ItemIndex;

解决方案 »

  1.   

    就這樣寫吧,RTTL可以實現,但效率不是很高。
      

  2.   

    LED1..LED24,是字段名吗,如果是,就是一个循环问题了
    for i := 1 to 24 do
    begin
      ...
       Fields.Fields['LED'+IntToStr(i)].AsString := ....
      ...
    end;
      

  3.   

    2楼的方法不错!
    如果变量时在字符串里面的,比如下面的APM2_tb,我有很多这样的表,想把表名存在一个数组里,然后在SQL.ADD中用循环一次代替表名,这个有办法实现吗?字符串里面的!!!
    SQL.Add('Delete from APM2_tb where MeterName = '+''''+MeterNameBox.Text+''';');
      

  4.   

    你那个LED1。。LED24是个什么东西,控件?如果是控件的话,比如是TLEDBox,那么可以这样
    var
      I: Integer;
      TmpName: String;
    begin
      for I := 1 to 24 do
      begin
        TmpName := 'LED' + IntToStr(I);
        Fields.Fields[1].AsString := TLEDBox(FindComponent(TmpName)).Text;
      end;
      

  5.   


    放在字符串里一样,比如
    var
      I: Integer;
      TmpName: String;
    begin
      for I := 1 to 24 do
      begin
        TmpName := 'Delete from APM' + IntToStr(I) + '_tb where MeterName  '+''''+MeterNameBox.Text+''';'';
        SQL.Add(TmpName);
      end;
      

  6.   

    发现你的SQL.Add('Delete from APM2_tb where MeterName = '+''''+MeterNameBox.Text+''';');有点问题
    应该为SQL.Add('Delete from APM2_tb where MeterName = '+'''+MeterNameBox.Text+'''');所以我上边写的TmpName := 'Delete from APM' + IntToStr(I) + '_tb where MeterName  '+''''+MeterNameBox.Text+''';''; 应改为
    TmpName := 'Delete from APM' + IntToStr(I) + '_tb where MeterName  '+'''+MeterNameBox.Text+'''';