我在Delphi6定义了一个ansistring类变量aa
取leftstr(aa,1)为一各字节"T"在Delphi6编译结果正常,
可是拿到装有Delphi7的机器中编译结果出现了两个字节,让我恼火!请大侠帮我解决一下,谢谢!

解决方案 »

  1.   

    定义是use strutils
    怎么办?
      

  2.   

    不会吧?D7+Win2003下测试通过,正确
    var aa: ansistring;
    begin
      aa := '1234567890';
      aa := leftstr(aa,1);
      caption := aa;//1
    end;
      

  3.   

    我这里好像找到Delphi7中关于LeftStr有两种函数一种就是熟悉的Leftstr,还有一种就是LeftBStr,我用LeftBStr就正确了,大家讨论下是不是这个原因,以后我们转Delphi6为Delphi7时一定要注意是不是要更换函数了。
      

  4.   

    像:var aa: ansistring;
    begin
      aa := '1234567890';
      aa := leftstr(aa,1);
      caption := aa;//1
    end;
    测试可以通过呀
    To syswer () 
    你的代码是怎么样的的
      

  5.   

    var 
       ss : ansitring;
    begin
       ss:=chr(StrToInt('$AE'))+chr(StrToInt('$AF'))+'abcd';
       if leftstr(ss,1)=chr($AE) then
         label1.caption:='ok'
       else
         label1.caption:='false';
    end;
      

  6.   

    SysUtils单元有很多Ansi开头的函数方法可以参考
    另外, 比较字符串尽量不要用等于号
      

  7.   

    这样比才对
    procedure TForm1.Button1Click(Sender: TObject);
    var
       ss : ansistring;
    begin
       ss:=chr(StrToInt('$AE'))+chr(StrToInt('$AF'))+'abcd';
       if leftstr(ss,1)[1]=chr($AE) then  //-----leftstr(ss,1)[1] 
         label1.caption:='ok'
       else
         label1.caption:='false';
    end;
      

  8.   

    但是在Delphi6中就不会有这么多麻烦,很正常的就编译过去,得出正确结果,谢谢指点,那比较字符串尽量不要用等于号,那怎么用啊?