FStrBuffer: string;  
FBuffer: array of byte;
FLen: integer;
//分配内存
    SetLength(Fbuffer,FLen);
    for i := 1 to FLen do
    begin
        //命令字符串转换为16进制
        mStr := '$' + Copy(FStrBuffer,i*2-1,2);
        try
            //动态数组从零开始计算
            FBuffer[i-1] := StrToInt(mStr);
        except
            Exit;
        end;
    end;

解决方案 »

  1.   

    为什么提示 $ is not a valid integer value
      

  2.   

    FStrBuffer: string;  
    FBuffer: array of byte;
    FLen: integer;
        //-------------------------------------
        FLen:=Length(FStrBuffer);     //取原字串长度
        if FLen mod 2 >0 then    
        begin                         //如果不能被2整除
           FStrBuffer:='0'+FStrBuffer;//在前面添零补足
        end;
        FLen:=Length(FStrBuffer) div 2;//一次取两个字节长度
                                       //将字串长度除以2得
                                       //转换次数
        //-------------------------------------
        //分配内存    
        SetLength(Fbuffer,FLen);
        for i := 1 to FLen do
        begin
            //命令字符串转换为16进制
            mStr := '$' + Copy(FStrBuffer,i*2-1,2);
            try
                //动态数组从零开始计算
                FBuffer[i-1] := StrToInt(mStr);
            except
                Exit;
            end;
        end;
      

  3.   

    flen已经定死,关键是为何$不是有效的整型
      

  4.   

    编译时可以通过,就是运行时出现$ is not a valid integer value
    flen已经定死为5,关键是为何$不是有效的整型
      

  5.   


     例$FCA0这样一个十六进制字串本身只有两字节,一次取一字节,那么取到第三次是不是只有一个空串?那么此前在空串前加一个'$'是不是就会有下面的错误?
    ----------------------------------------------------------------
    原贴内容:
    编译时可以通过,就是运行时出现 $ is not a valid integer value
    flen已经定死为5,就是为何$不是有效的整型
    //-------------------------------------
        //分配内存    
        SetLength(Fbuffer,FLen);
        for i := 1 to FLen do
        begin
            //命令字符串转换为16进制
            mStr := '$' + Copy(FStrBuffer,i*2-1,2);
            try
                //动态数组从零开始计算
                FBuffer[i-1] := StrToInt(mStr);
            except
                Exit;
            end;
        end;