下面有段程序,说能告诉我最后ls_a变量的值是多少,在delphi7下的一段程序procedure TForm1.Button2Click(Sender: TObject);
var
    ls_t , ls_a  : string ;
    li_p : integer ;
begin
    ls_t := '姓名:form';
    li_p := pos ('form' , ls_t ) ;
    ls_a := leftStr(ls_t ,li_p) ;
end;

解决方案 »

  1.   

    返回"姓名:f"是对的
    你应这样写
    ls_a := leftStr(ls_t ,li_p - 1) ;//不知是不是你要的效果
      

  2.   

    你想要结果是姓名:的话用
    procedure TForm1.Button1Click(Sender: TObject);
    var
        ls_t , ls_a  : string ;
        li_p : integer ;
    begin
        ls_t := '姓名:form';
        li_p := pos ('form' , ls_t ) ;
        ls_a := leftStr(ls_t ,li_p-1) ;
        showmessage(ls_a);
    end ;
      

  3.   

    我要的是:'姓名:',你们有没有实际运行过,看看结果就知道问题了,在pos运算的时候,汉字是2个字符,但是leftStr函数里汉字却是一个字符,所以运行得到的ls_a为:'姓名:for',怎么会这样啊
      

  4.   

    我知道这句话有问题ls_a := leftStr(ls_t ,li_p) 
    应该写为
    ls_a := leftStr(ls_t ,li_p - 1 )
      

  5.   

    看一下帮助就明白了
    DescriptionLeftStr returns the leading characters of AText up to a length of ACount characters.Note: If AText is an AnsiString and the current locale uses multi-byte characters, LeftStr may return more than ACount bytes. To return a specific number of bytes, use LeftBStr.改成
    procedure TForm1.Button1Click(Sender: TObject);
    var
        ls_t , ls_a  : string ;
        li_p : integer ;
    begin
        ls_t := '姓名:form';
        li_p := pos ('form' , ls_t ) ;
        ls_a := leftBStr(ls_t ,li_p - 1) ;
        Caption := ls_a;
    end;
      

  6.   

    哦,sorry,这样应该更好
    procedure TForm1.Button1Click(Sender: TObject);
    var
        ls_t , ls_a  : WideString ;
        li_p : integer ;
    begin
        ls_t := '姓名:form';
        li_p := pos ('form' , ls_t ) ;
        ls_a := leftStr(ls_t ,li_p - 1) ;
        Caption := ls_a;
    end;
      

  7.   

    正如樓上所說的,leftstr在雙字節平臺環境下,針對AnsiString返回的字節數比實際的要多,可以用leftbstr代替,或者用WideString。
      

  8.   

    直接这样不就可以了吗?var
        ls_t , ls_a  : WideString ;
        li_p : integer ;
    begin
        ls_t := '姓名:form';
        li_p := pos ('form' , ls_t ) ;
        ls_a := copy(ls_t ,1,li_p - 1) ;
        showmessage( ls_a);
    end;