INDY的 TIdBytes转换存在BUG,用的最新的10.5.7 一样啊,转换出错!!!procedure TForm1.RzBitBtn19Click(Sender: TObject);
var
bb: TIdBytes;
ss: AnsiString;
begin
ss := '500000000701CCCCCCCC0400000061646D696E00000000000000000000000061646D696E00000000000000000000000031313131000000000000000000000000004448435630383037303830310000000000';
ss := HexToStr(ss);
bb := ToBytes(ss);
end;procedure TForm1.RzBitBtn20Click(Sender: TObject);
var
bb: TIdBytes;
ss: AnsiString;
begin
SetLength(bb, 82);
bb[0] := 80;
bb[1] := 0;
bb[2] := 0;
bb[3] := 0;
bb[4] := 7;
bb[5] := 1;
bb[6] := 204;
bb[7] := 204;
bb[8] := 204;
bb[9] := 204;
bb[10] := 4;
bb[11] := 0;
bb[12] := 0;
bb[13] := 0;
bb[14] := 97;
bb[15] := 100;
bb[16] := 109;
bb[17] := 105;
bb[18] := 110;
bb[19] := 0;
bb[20] := 0;
bb[21] := 0;
bb[22] := 0;
bb[23] := 0;
bb[24] := 0;
bb[25] := 0;
bb[26] := 0;
bb[27] := 0;
bb[28] := 0;
bb[29] := 0;
bb[30] := 0;
bb[31] := 97;
bb[32] := 100;
bb[33] := 109;
bb[34] := 105;
bb[35] := 110;
bb[36] := 0;
bb[37] := 0;
bb[38] := 0;
bb[39] := 0;
bb[40] := 0;
bb[41] := 0;
bb[42] := 0;
bb[43] := 0;
bb[44] := 0;
bb[45] := 0;
bb[46] := 0;
bb[47] := 0;
bb[48] := 49;
bb[49] := 49;
bb[50] := 49;
bb[51] := 49;
bb[52] := 0;
bb[53] := 0;
bb[54] := 0;
bb[55] := 0;
bb[56] := 0;
bb[57] := 0;
bb[58] := 0;
bb[59] := 0;
bb[60] := 0;
bb[61] := 0;
bb[62] := 0;
bb[63] := 0;
bb[64] := 0;
bb[65] := 68;
bb[66] := 72;
bb[67] := 67;
bb[68] := 86;
bb[69] := 48;
bb[70] := 56;
bb[71] := 48;
bb[72] := 55;
bb[73] := 48;
bb[74] := 56;
bb[75] := 48;
bb[76] := 49;
bb[77] := 0;
bb[78] := 0;
bb[79] := 0;
bb[80] := 0;
bb[81] := 0;
ss := BytesToString(bb);
end;第二个的BB的HEX值就是第一个的SS可是INDY里的转换 值不对
var
bb: TIdBytes;
ss: AnsiString;
begin
ss := '500000000701CCCCCCCC0400000061646D696E00000000000000000000000061646D696E00000000000000000000000031313131000000000000000000000000004448435630383037303830310000000000';
ss := HexToStr(ss);
bb := ToBytes(ss);
end;procedure TForm1.RzBitBtn20Click(Sender: TObject);
var
bb: TIdBytes;
ss: AnsiString;
begin
SetLength(bb, 82);
bb[0] := 80;
bb[1] := 0;
bb[2] := 0;
bb[3] := 0;
bb[4] := 7;
bb[5] := 1;
bb[6] := 204;
bb[7] := 204;
bb[8] := 204;
bb[9] := 204;
bb[10] := 4;
bb[11] := 0;
bb[12] := 0;
bb[13] := 0;
bb[14] := 97;
bb[15] := 100;
bb[16] := 109;
bb[17] := 105;
bb[18] := 110;
bb[19] := 0;
bb[20] := 0;
bb[21] := 0;
bb[22] := 0;
bb[23] := 0;
bb[24] := 0;
bb[25] := 0;
bb[26] := 0;
bb[27] := 0;
bb[28] := 0;
bb[29] := 0;
bb[30] := 0;
bb[31] := 97;
bb[32] := 100;
bb[33] := 109;
bb[34] := 105;
bb[35] := 110;
bb[36] := 0;
bb[37] := 0;
bb[38] := 0;
bb[39] := 0;
bb[40] := 0;
bb[41] := 0;
bb[42] := 0;
bb[43] := 0;
bb[44] := 0;
bb[45] := 0;
bb[46] := 0;
bb[47] := 0;
bb[48] := 49;
bb[49] := 49;
bb[50] := 49;
bb[51] := 49;
bb[52] := 0;
bb[53] := 0;
bb[54] := 0;
bb[55] := 0;
bb[56] := 0;
bb[57] := 0;
bb[58] := 0;
bb[59] := 0;
bb[60] := 0;
bb[61] := 0;
bb[62] := 0;
bb[63] := 0;
bb[64] := 0;
bb[65] := 68;
bb[66] := 72;
bb[67] := 67;
bb[68] := 86;
bb[69] := 48;
bb[70] := 56;
bb[71] := 48;
bb[72] := 55;
bb[73] := 48;
bb[74] := 56;
bb[75] := 48;
bb[76] := 49;
bb[77] := 0;
bb[78] := 0;
bb[79] := 0;
bb[80] := 0;
bb[81] := 0;
ss := BytesToString(bb);
end;第二个的BB的HEX值就是第一个的SS可是INDY里的转换 值不对
解决方案 »
- 请问怎么从数据库动态创建按钮事件代码?
- 如何获取syslistview32某一行的屏幕坐标
- 如何设置TDataBase的params属性值连接SQL ?急。。。。。
- 请问Delphi可以Access的密码更改吗?谢谢
- 我需要delphi6,请问哪有下载的?
- 如何让程序,自己去寻找、区分TXT文件中中文的单引号“‘ ”,与西文的单引号“'”。并将“‘”或“ ’”,改为“'”。
- 各位关注关注,在线等待!!
- 在DELphi中如何申明一个指向数组的指针
- Delphi 6 下载地址!I m Downloading,Now!
- 请问<<Delphi5开发人员指南>>(机械工业出版社出版)南京有卖吗?
- delphi自带的Paradox db库如何记住密码?
- 江湖救急,一个正则表达式
{$IFDEF STRING_IS_ANSI}; ADestEncoding: TIdTextEncoding = nil{$ENDIF}
): string; overload;
{$IFDEF USE_INLINE}inline;{$ENDIF}
begin
Result := BytesToString(AValue, 0, -1, AByteEncoding
{$IFDEF STRING_IS_ANSI}, ADestEncoding{$ENDIF}
);
end;function BytesToString(const AValue: TIdBytes; const AStartIndex: Integer;
const ALength: Integer = -1; AByteEncoding: TIdTextEncoding = nil
{$IFDEF STRING_IS_ANSI}; ADestEncoding: TIdTextEncoding = nil{$ENDIF}
): string; overload;
var
LLength: Integer;
{$IFDEF STRING_IS_ANSI}
LBytes: TIdBytes;
{$ENDIF}
begin
{$IFDEF STRING_IS_ANSI}
LBytes := nil; // keep the compiler happy
{$ENDIF}
LLength := IndyLength(AValue, ALength, AStartIndex);
if LLength > 0 then begin
EnsureEncoding(AByteEncoding);
{$IFDEF STRING_IS_UNICODE}
Result := AByteEncoding.GetString(AValue, AStartIndex, LLength);
{$ELSE}
EnsureEncoding(ADestEncoding);
LBytes := TIdTextEncoding.Convert(
AByteEncoding,
ADestEncoding,
AValue, AStartIndex, LLength);
SetString(Result, PAnsiChar(LBytes), Length(LBytes));
{$ENDIF}
end else begin
Result := '';
end;
end;
function ToBytes(const AValue: string; ADestEncoding: TIdTextEncoding = nil
{$IFDEF STRING_IS_ANSI}; ASrcEncoding: TIdTextEncoding = nil{$ENDIF}
): TIdBytes; overload;
{$IFDEF USE_INLINE}inline;{$ENDIF}
begin
Result := ToBytes(AValue, -1, 1, ADestEncoding
{$IFDEF STRING_IS_ANSI}, ASrcEncoding{$ENDIF}
);
end;function ToBytes(const AValue: string; const ALength: Integer; const AIndex: Integer = 1;
ADestEncoding: TIdTextEncoding = nil
{$IFDEF STRING_IS_ANSI}; ASrcEncoding: TIdTextEncoding = nil{$ENDIF}
): TIdBytes; overload;
var
LLength: Integer;
begin
LLength := IndyLength(AValue, ALength, AIndex);
if LLength > 0 then
begin
EnsureEncoding(ADestEncoding);
{$IFDEF STRING_IS_UNICODE}
Result := ADestEncoding.GetBytes(Copy(AValue, AIndex, LLength));
{$ELSE}
EnsureEncoding(ASrcEncoding, encOSDefault);
Result := TIdTextEncoding.Convert(
ASrcEncoding,
ADestEncoding,
RawToBytes(AValue[AIndex], LLength));
{$ENDIF}
end
else
begin
SetLength(Result, 0);
end;
end;function ToBytes(const AValue: Char; ADestEncoding: TIdTextEncoding = nil
{$IFDEF STRING_IS_ANSI}; ASrcEncoding: TIdTextEncoding = nil{$ENDIF}
): TIdBytes; overload;
{$IFDEF STRING_IS_UNICODE}
var
LChars: {$IFDEF DOTNET}array[0..0] of Char{$ELSE}TIdWideChars{$ENDIF};
{$ENDIF}
begin
EnsureEncoding(ADestEncoding);
{$IFDEF STRING_IS_UNICODE}
{$IFNDEF DOTNET}
SetLength(LChars, 1);
{$ENDIF}
LChars[0] := AValue;
Result := ADestEncoding.GetBytes(LChars);
{$ELSE}
EnsureEncoding(ASrcEncoding, encOSDefault);
Result := TIdTextEncoding.Convert(
ASrcEncoding,
ADestEncoding,
RawToBytes(AValue, 1));
{$ENDIF}
end;