if not (A.Cells(2,4)>A.Cells(2+3,5) and (A.Cells((2),4+1)>(A.Cells(1+6*3,5)+78+A.Cells(4,9)/A.Cells(3,(10))))) then以上为一行字符串,
现在我想从中提取出这样的数组
1:  A.Cells(2,4)
2:  A.Cells(5,5)
3:  A.Cells(2,5)
4:  A.Cells(19,5)
5:  A.Cells(4,9)
6:  A.Cells(3,10)
难点就是说A.Cells(1+6*3,5),还要计算1+6*3=19来,大家讨论讨论,下午接贴

解决方案 »

  1.   

    建立一个叫做 A的com ,写入cells 的方法,调用windows 提供的scriptControl 你这个是想做一个支持script的cell表格吧?这个公式定义后你想求出来?最好集成脚本组件,并扩展它支持你的这个表格对象。
      

  2.   

    A.Cells
    我還不知道是什麼??
      

  3.   

    给你介绍一个控件:dx家的dxfExpressionExplore,用它可以解决你字符串表达式计算的问题。至于拆分成表达式,你就自己写写吧,不难,就是麻烦一点;判断一下括号的数量,逗号的位置等就可以了。
      

  4.   

    就是相当于做个脚本解释器并且提取出来,记得好像有一个现成的这么一些东西,你去网上搜搜
     ________________________欢迎访问和宣传我的论坛http://hthunter.vicp.net/
      

  5.   

    waaaaaa
    好难, 看不懂了!
      

  6.   

    希望有帮助
    //////////// TParserEdit for Microsoft scriptControl ////////////
    // version 1.0
    // Author :s.f.
    // Date : 2004/3/25
    /////////////////////////////////////////////////////////////////unit uParserEdit;interfaceuses
      Windows,SysUtils, Variants, Classes, ComObj, StdCtrls;
    type
      TParserEdit = class(TEdit)
      private
        function getEvaluatedVariant: Variant;
      public
        property TextValue: Variant read getEvaluatedVariant;
      end;procedure Register; //这里可以注解掉,不注册为静态组件,需要动态建立
    implementationprocedure Register;                     //不注册请注解该过程
    begin
      RegisterComponents('IBSSoft', [TParserEdit]);
    end;function TParserEdit.getEvaluatedVariant: Variant;
    var
      Parser            : OleVariant;
      Tls               : TStrings;
      Code              : string;
    begin
      Code := Text;
      try
        Parser := CreateOLEObject('ScriptControl');
        try
          try
            Parser.Language := 'VbScript';
            Parser.AllowUI := TRUE;
            Result := Parser.Eval(Code);
          except
            Tls := TstringList.Create;
            try
              with Tls do
              begin
                Add('错误号:' + inttostr(Parser.Error.Number));
                Add('源:' + Parser.Error.Source);
                Add('描述:' + Parser.Error.Description);
                Add('行:' + intToStr(Parser.Error.Line) + ',列:' +
                  Inttostr(Parser.Error.Column));
                Add('代码:' + Parser.Error.Text);
                Add('帮助文件:' + Parser.Error.helpFile);
                Add('帮助主题:' + inttostr(Parser.Error.HelpContext));
              end;
              MessageBox(getforegroundwindow, pchar(Tls.Text), '执行错误',
                mb_ok or mb_IconError);
            finally
              tls.free;
            end;
          end;
        finally
          Parser := null;
        end;
      except
        MessageBox(getforegroundwindow, 'Com 对象错误', '无法解析', mb_ok or
          mb_IconError);
      end;
    end;
    end.
    /////////////测试窗体调用/////////////
    //1.注册为组件
    //2.加入该组件到form
    //3.修改ParserEdit1的text内容为 10*(1+2)+20
    //4.放个button 并编写OnClick事件
    //////////////////////////////////procedure TForm1.Button1Click(Sender: TObject);
    begin
      showmessage(String(ParserEdit1.TextValue));  //取回结果
    end;
      

  7.   

    在delphibbs得到了解答,谢谢大家,给分了