var
        M,D,C,S:string;
        I,T,A:integer;
-------A:=ord(copy(M,I,1));delphi6报incompatible types,为什么,谢谢 :)

解决方案 »

  1.   

    incompatible   types后面跟的呢?
      

  2.   

    谢谢楼上,"incompatible       types"后面什么也没有 
    是一段从FoxPro转过来的,下面是代码var
            M,D,C,S:string;
            I,T,A:integer;
    begin
            M := '';
            D := '12345678901234567890';
            C := '';
            S := '';
            FOR I:=1 TO Length(M) do
            begin                A:=ord(copy(M,I,1));  //编译出错
                    C := C + copy(D,ord(CHR( A + 32)) + 1,1);
                    mo.Lines.Add(C);
            end;        FOR I:=1 to Length(TRIM(C)) mod 3 do
            begin
                    T := StrToInt(copy(C,(I-1)*3+1,3));
                    if T>255 then
                            S:=S+CHR(0)
                    else
                            S:=S+CHR(T);
                    mo.Lines.Add(S);
            end;
            edtOutput.Text := S;
    end;
    -----FoxPro原代码
    *DECRYPT********************
     PARAMETER M
     PRIVATE I , D , C , S , T
     D = '12345678901234567890'
     C = ''
     S = ''
     FOR I = 1 TO LEN(M)
        C = C + SUBSTR(D,VAL(CHR(ASC(SUBSTR(M,I,1)) + 32)) + 1,1)
     ENDFOR 
     FOR I = 1 TO LEN(RTRIM(C)) / 3
        T = VAL(SUBSTR(C,(I - 1) * 3 + 1,3))
        S = S + CHR(IIF(T > 255,0,T))
     ENDFOR 
     RETURN S
    ************************************谢谢
      

  3.   

    var 
                    M,D,C,S:string; 
                    I,T,A:integer; 
    ------- A:=ord(copy(M,I,1)); delphi6报incompatible   types,为什么,谢谢   :)

    答楼主,ord的参数不能是字符串,要用字符。
    而copy(M,I,1)得到的就字符串,(虽然只有一个字符), 
    所以改成
    A:=ord(copy(M,I,1)[1]);就OK了