本帖最后由 fancy967 于 2010-02-01 18:19:40 编辑

解决方案 »

  1.   

    2010中的char是双字节的,你改用ansichar吧
      

  2.   


    function HashStr2BinStr(Hash:string):string;
    var
       buf:array[0..63] of AnsiChar;
       i:Integer;
    begin
        Result:='';
        FillChar(buf, SizeOf(buf),0);
        SetLength(Result, Round(Length(Hash)/2));
        FillChar(Result[1], Length(Result),0);
        HexToBin(PChar(Hash), buf,SizeOf(buf));
        for i:=0 to Round(Length(Hash)/2)-1 do
            Result:= buf;
    end;HexToBin(PChar(Hash), buf,SizeOf(buf));
    PChar等價于 PWideChar,所以調用的是function HexToBin(Text: PWideChar; Buffer: PAnsiChar; BufSize: Integer): Integer; overload;
    因此只需 改buf:array[0..63] of Char;
    為buf:array[0..63] of AnsiChar;