AnsiString PWideChar类型转换问题
function DecodeProductKey(const HexSrc: array of BYTE): pchar;stdcall;
const
StartOffset: INTEGER = $34;
EndOffset: INTEGER = $34 + 15;
Digits: array[0..23] of CHAR = ('B', 'C', 'D', 'F', 'G', 'H', 'J', 'K', 'M', 'P', 'Q', 'R', 'T', 'V', 'W', 'X', 'Y', '2', '3', '4', '6', '7', '8', '9');
dLen: INTEGER = 29;
sLen: INTEGER = 15;
var
HexDigitalPID: array of CARDINAL;
Des: array of CHAR;
I, N: INTEGER;
HN, Value: CARDINAL;
begin
SetLength(HexDigitalPID, dLen);
for I := StartOffset to EndOffset do
begin
HexDigitalPID[I - StartOffSet] := HexSrc[I];
end;
SetLength(Des, dLen + 1);
for I := dLen - 1 downto 0 do
begin
if (((I + 1) mod 6) = 0) then
begin
Des[I] := '-';
end
else
begin
HN := 0;
for N := sLen - 1 downto 0 do
begin
Value := (HN SHL 8) or HexDigitalPID[N];
HexDigitalPID[N] := value div 24;
HN := Value mod 24;
end;
Des[I] := Digits[HN];
end;
end;
Des[dLen] := Chr(0);
for I := 0 to Length(Des) do
begin
Result := Result + Des[I];{在delphi2009下该句出错,提示[DCC Error] OperatingSystem.pas(55): E2010 Incompatible types: 'AnsiString' and 'PWideChar',请您帮忙看看,这个类型要怎么转换呢?}
end;
end;
const
StartOffset: INTEGER = $34;
EndOffset: INTEGER = $34 + 15;
Digits: array[0..23] of CHAR = ('B', 'C', 'D', 'F', 'G', 'H', 'J', 'K', 'M', 'P', 'Q', 'R', 'T', 'V', 'W', 'X', 'Y', '2', '3', '4', '6', '7', '8', '9');
dLen: INTEGER = 29;
sLen: INTEGER = 15;
var
HexDigitalPID: array of CARDINAL;
Des: array of CHAR;
I, N: INTEGER;
HN, Value: CARDINAL;
begin
SetLength(HexDigitalPID, dLen);
for I := StartOffset to EndOffset do
begin
HexDigitalPID[I - StartOffSet] := HexSrc[I];
end;
SetLength(Des, dLen + 1);
for I := dLen - 1 downto 0 do
begin
if (((I + 1) mod 6) = 0) then
begin
Des[I] := '-';
end
else
begin
HN := 0;
for N := sLen - 1 downto 0 do
begin
Value := (HN SHL 8) or HexDigitalPID[N];
HexDigitalPID[N] := value div 24;
HN := Value mod 24;
end;
Des[I] := Digits[HN];
end;
end;
Des[dLen] := Chr(0);
for I := 0 to Length(Des) do
begin
Result := Result + Des[I];{在delphi2009下该句出错,提示[DCC Error] OperatingSystem.pas(55): E2010 Incompatible types: 'AnsiString' and 'PWideChar',请您帮忙看看,这个类型要怎么转换呢?}
end;
end;
...全文
相关推荐
Delphi7升级到Delphi 2010、Delphi XE、Delphi XE2总结
Delphi7升级到Delphi 2010、Delphi XE、Delphi XE2总结 !最后有个项目要移植到64位,所以这个很有用。在2010中PChar已经不再表示PAnsiChar而是表示PWideChar,如果依然这样写,运行时很可能会得到一个内存访问错误。因为每 次Inc(P),实际上指针向前移动了2字节,因为SizeOf(WideChar)=2,Inc(P)相当于 P:=P+SizeOf(WideChar)。 解决方法是把PChar替换成PAnsiChar
Delphi 的字符及字符串.doc
delphi中的字符串及字符说明及各种示例
win7系统delphi7和delphi2010下安装spcomm串口控件的补充
在本站下了一份《win7系统delphi7和delphi2010下安装spcomm串口控件》按照说明安装发现编译出错,后来在网上找了解决的办法,将此补充上传分享。
Delphi中的字符与字符串.rar
介绍了delphi中的Char、AnsiChar、WideChar、PChar和PWideChar,并且给出了测试工程代码。
Delphi的内存操作函数[定义].pdf
Delphi的内存操作函数[定义].pdf


