var
  chro,I,scou:integer;
  strs,encode:string;
  chars:char;
begin
  strs:=trim(edit1.text);
  scou:=strlen(pchar(strs));
  encode:='';
  for i:=0 to scou-1 do
    begin
      chars:=copy(strs,i,1);    //出错语句
      chro:=ord(chars)+2;
      encode:=encode+chr(chro);
    end;
  edit2.Text:=encode;
end;

解决方案 »

  1.   

    为什么要转化?通过strs[i]就可以直接访问
    i:=0 里面存字符串长度
    从1开始就是字符了
      

  2.   

    var
      chro,I,scou:integer;
      strs,encode:string;
      pchar1:pchar;
      chars:char;
    begin
      strs:=trim(edit1.text);
      scou:=strlen(pchar(strs));
      encode:='';
      for i:=0 to scou-1 do
        begin
          pchar1:=pchar(copy(strs,i,1));
          chars:=pchar1[0];
          chro:=ord(chars)+2;
          encode:=encode+chr(chro);
        end;
      edit2.Text:=encode;
      

  3.   

    Copy函数返回的是String,不能直接付给Char类型变量。
      

  4.   

    var
      i:integer;
      strs,encode:string;
    begin
      strs:=trim(edit1.text);
      encode:='';
      for i:=1 to length(strs) do
          encode:=encode+chr(Ord(strs[i])+2);
      edit2.Text:=encode;
    end;
      

  5.   

    要通过下标访问String[I],Copy返回的就是只是一个字符或没有字符,还是String,与Char类型不兼容的。
      

  6.   

    不用轉啊:char :=string[i];
      

  7.   

    procedure TForm1.Button1Click(Sender: TObject);
    var
      chro,I,scou:integer;
      strs,encode:string;
      chars:char;
    begin
      strs:=trim(edit1.text);
      scou:=strlen(pchar(strs));
      encode:='';
      for i:=0 to scou-1 do
      begin
        chars:=strs[i];    //出错语句
        chro:=ord(chars)+2;
        encode:=encode+chr(chro);
      end;
      edit2.Text:=encode;
    end;