if a<b then 
beginend;

解决方案 »

  1.   

    sorry,可能我没有表达清楚,只是我的查询条件是不断变化的,所以想用一个变量来替换它们。但if后面跟的只能是boolean类型,而不能是string。所以不知道怎么办(如何将字符串变为程序中的条件来执行?)
      

  2.   

    if a<b then
      s1:='a'+'<'+'b';
    然后再判断s,和s1
    关键是看你怎么生成s1
      

  3.   

    nono,我这个只是个简单的例子,如果我的公式比较复杂呢?比如(a+b*c-d>u+k/f)?????
      

  4.   

    赤道线那么长也可用if xxx<yyy then begin end;呀
      

  5.   

    楼上几位,我还是不太明白!!!!!!最简单的程序在这:procedure TForm1.Button1Click(Sender: TObject);
    var a,b :integer;
    var s:string;
    begin
      a:=1;
      b:=2;
      s:='a<b';
      if a<b then
      begin
        showmessage('ok');
      end;
    end;
    end.谁只要能把if a<b then中的a<b想办法用S这个字串来替就可以了(当然不知直接用了,s是string,a<b是boolean。谁行??????????
      

  6.   

    好象问题还应该是字串的生成上,直接用一个字串替换好象达不到目的。还是动态生成条件吧,就好象把a<b换成三部分,公式长就多分几部分了。
      

  7.   

    cul(恐龙++):这样太累了吧??这条件可是供用户自己选择填写的,还要支持用户自定义条件生成。有更好的招么?
      

  8.   

    异想天开,,想把STRING变成DELHPI的代码,,,,要么你改变实现方式,要么你使用调用其它的程序,,如把判断工作拿给数据库去做,,这样传入的字符才可能被数据程序处理成变量或其他什么的,,,另外想一下PASCAL中可不可以实现宏吧。。
      

  9.   

    procedure TForm1.Button1Click(Sender: TObject);
    var a,b :integer;
    var s:string;
    begin
      a:=1;
      b:=2;
      s:='a<b';
      if FUN(s) then
      begin
        showmessage('ok');
      end;
    end;
    end.
    关键如何来定义FUN处理字符串,
      

  10.   

    记得好像数据结构的时候学过这个公式。
    关键在于,你整个表达式是一个字符串,不能直接进行运算。以后的语言要是有一个excute()函数就好了,执行用户的表达式给回结果。
      

  11.   

    太好了,这个运行没有错,呵呵
    procedure TForm1.Button1Click(Sender: TObject);
    var s: variant;
    begin
      s:= edit1.Text;
      if Bool(s) then
        showmessage('TRUE')
      else
        showmessage('FALSE');
    end;但是结果是错的:P
      

  12.   

    procedure TForm1.Button1Click(Sender: TObject);
    var a,b :integer;
    var s:boolean;
    begin
      a:=1;
      b:=2;
      s:=a<b;
      if s then
      begin
        showmessage('ok');
      end;
    end;
    end.
    不知道这么行吗?
      

  13.   

    不行
    必须对表达式进行分析
    我作过类似的东东
    可以对算术表达式进行分析
    当然改一改可以对
    逻辑表达式进行分析
    如果你要的话
    我可以改过之后发给你
    EM:[email protected]
      

  14.   

    这样,这样:
    select 1 as Field(你自己写,不要也可) where (:pcondition)
    parameters.parambyname('pcondition') := edit1.textif(not isempty) then
    begin
      true
    end
    else
      false;
    hahahahahahahhahaha
      

  15.   

    高呀
    DELPHI
    也只有在SQL时才是解释的
      

  16.   

    ADOQuery1.Close;
      ADOQuery1.SQL.Clear;
      ADOQuery1.SQL.Add('select 1 As Expr1 where '+Trim(Edit1.Text));
      ADOQuery1.Prepared := true;
      ADOQuery1.Open;
      if(not ADOQuery1.IsEmpty) then
        showmessage('TRUE')
      else
        showmessage('FALSE');
    通过测试,加上try就更好了 + - * / ()没有问题,只是 MOD Div 可就得按sql的标准了
      

  17.   

    你学过编译原理吗?
    这是最简单的!
    否则Delphi怎么能看懂你的原程序?
      

  18.   

    高虽然高
    但是不能对DELPHI中定义的变量进行判断
    只能对常量
    不免美中不足
    要完全实现还是需要对表达式解析的
      

  19.   

       放弃这个幻想吧。
     
       这种功能在VFP里实现特别简单,特别实用。(用宏替换 & 和名称表达式())
       但是在delphi  和 bcb 里几乎不可能实现,我以前一直用VFP对类似字符串转化为 名称 或 表达式的用法用的多了。但等我学bcb时,也到处发帖子问类似问题,得到的结果是绝对没有,就是因为他们是编译语言,而非解释语言。
       即便费了不少心思实现你提到的具体例子,但也不可能从根本上解决其他类似问题。即字符串转化为名称或表达式的问题。
      

  20.   

    procedure TForm1.Button5Click(Sender: TObject);
    var
     a,b :integer;
     s:boolean;
    begin
      a:=1;
      b:=2;
      s:=a<b;
      if s then
      begin
        showmessage('ok');
      end;
    end;
    老兄这种方法我试了--可以。
      

  21.   

    我估计你要的并不是那个字符串
    你要的是一个 boolen 类型的变量 s
    如果你的 a 和 b 的关系是有限的,可以考虑
    先比较 a b 然后把比较的结果付给 s
    然后使用 s 来判断
    不过觉得这样好象么有什么简便哦
    呵呵我也糊涂了
      

  22.   

    我也喜欢这么做。
    但解释语句可以把运算符进去我还没写过。
    我在php中常写
    for ( $i = 0 ; $i < 100 ; $i ++ )
        include $i.".php" ;
    这个好像delphi就无法做到。
      

  23.   

    同意johnwesley(界限),其实也谈不上编译等等,如果你做过计算器程序的话,你一定可以
    搞定。一般介绍算法的书上都会有例子的。
      

  24.   

    当然只有用编译的方法,或是调用其他编译器。例如SQL