数组  Arr:array[1..500]of string;copy(Arr[1],1,30);我的数组是汉字和英文的混合 截取字符串输出的时候会乱码 该如何解决?

解决方案 »

  1.   

    給一些測試數據吧
    比如:
    arr[1]:='delphi 如何不出乱码的截取字符串'
    copy(arr[1],1,6)
    得到的结果是: delphi var
      wstr: widestring;
    begin
      wstr := arr[1];
      wstr := copy(wstr, 1, 30);
      showmessage(wstr);
    end; 
      

  2.   

    Arr[1]:='我是数组是汉字和英文的混合旧数据delphi'或者
    Arr[1]:='补充提问细节MNK请及时采纳的方法後感谢MNK回答者问题'或者
    Arr[1]:='准备5台数码相机系统用电脑安装数码系统软件'
    该如何截取字符串? 首先截取前15个汉字,然后再挨着截取剩余的部分 改如何实现?我这样写的 copy(Arr[1],1,30);   然后 copy(Arr(1),31,length(Arr[3]));
    但是在截取剩余部分的时候出现了乱码请大家帮忙
      

  3.   

    我这样写的 copy(Arr[1],1,30); 然后 copy(Arr(1),31,length(Arr[1]));
    截取剩余部分的时候出现了乱码
      

  4.   

    你使用WideString,因为对于AnsiString,中文字占2字节,英文字占1字节,delphi好像不能正确判断
      

  5.   

    [code=Delphi(Pascal]
    //截取字符串
    function InterceptionStr(aSource, aBStr, aEStr: string): string;
    var
      startPosition, endPosition: Cardinal;
    begin
      startPosition := Pos(aBStr,aSource);
      if startPosition > 0 then
        startPosition := startPosition + StrLen(PAnsiChar(aBStr))
      else
        startPosition := 1;
      aSource := Copy(aSource,startPosition,StrLen(PAnsiChar(aSource)));
      endPosition := Pos(aEStr,aSource);
      if endPosition > 0 then
        endPosition := endPosition - 1
      else
        endPosition := StrLen(PAnsiChar(aSource));
      aSource := Copy(aSource,1,endPosition);
      Result := aSource;
    end;[/code]
      

  6.   

    [code=Delphi(Pascal]
    //截取字符串
    function InterceptionStr(aSource, aBStr, aEStr: string): string;
    var
      startPosition, endPosition: Cardinal;
    begin
      startPosition := Pos(aBStr,aSource);
      if startPosition > 0 then
        startPosition := startPosition + StrLen(PAnsiChar(aBStr))
      else
        startPosition := 1;
      aSource := Copy(aSource,startPosition,StrLen(PAnsiChar(aSource)));
      endPosition := Pos(aEStr,aSource);
      if endPosition > 0 then
        endPosition := endPosition - 1
      else
        endPosition := StrLen(PAnsiChar(aSource));
      aSource := Copy(aSource,1,endPosition);
      Result := aSource;
    end;
    [/code]
      

  7.   

    呵呵 谢谢大家 搞定  五楼说的对 使用WideString