我设计了一个做选择题的程序,答案是用char型存放的,就是大写的ABCD,所以希望用户做题的时候是点单选框做出选择,而不是填空(用edit组件输入),这样就涉及一个判断用户的选择和数据库中标准答案是否相同的问题,但是明明我的答案是一致的,用“=”判断得到的布尔值却是假,实在想不通啊,哪位大哥能给个解决办法啊!!!

解决方案 »

  1.   

    procedure TForm1.getAnswer;
    var answer : string;
    begin
       answer:=sdsTk.FieldsByName('answer').AsString;
      if answer='A' then rbA.Checked;
      if answer='B' then rbB.Checked;
      if answer='C' then rbC.Checked;
      if answer='D' then rbD.Checked;
    end;
    //其中sdsTk是TSimpleDataSet组件(dbexpress中的),rbA,rbB...是RadioButton
      

  2.   

    我设了断点,加了个answer的watch,看到明明等于‘A’,但就是得不到True值
      

  3.   

    我知道了,你要把空格去掉啊 
    answer:=trim(sdsTk.FieldsByName('answer').AsString);
      

  4.   

    这种情况在某些数据库中会出现,比如用ado驱动的sql server数据库,如果数据库中的字段是定长字符串字段就会用空格填填充直到和设置的长度一致,如果是变长字段刚好相反,尾空格会自动清除