1.字符类型不同
在 DelphiXE 之前,默认PChar是PAnsiChar。在之后PChar 是一个指向 Char 的指针,它是一个unicode字符(一个 WideChar )。而 PAnsiChar 是一个指向 AnsiChar 的指针。
2.包含同名窗体
{$R *.dfm}:含义是包含同名窗体,如果只需要pas不需要dfm的时候要注意,否则会出现xxx.dfm找不到的报错
3.array[0…255] of char
表示指针,在和PAnsiChar(结构体)进行转换时,要加上@
4.GetPrivateProfileString
为初始化文件中指定的条目取得字串,分为GetPrivateProfileStringA和GetPrivateProfileStringW两个版本,分别对应AnsiChar和WideChar两个版本。所有参数类型要统一,D10用PWideChar成功获取民族。
DWORD GetPrivateProfileString(
LPCTSTR lpAppName,
LPCTSTR lpKeyName,
LPCTSTR lpDefault,
LPTSTR lpReturnedString,
DWORD nSize,
LPCTSTR lpFileName
);
5.Invalid floating point operation
问题原因:
在Delphi中需要通过浮点单位控制指令设置浮点运算单位。浮点单位控制指令控制着浮点运算的精度、四舍五入的方式以及特定的浮点运算是否触发异常。
解决方式:
直接禁用浮点运算的异常抛出
修改一下工程(.dpr)入口代码:
varSaved8087CW: WORD;
beginSaved8087CW := Default8087CW;Set8087CW($133F);tryApplication.Initiaze;...Application.Run;finallySet8087CW(Saved8087CW);end;
end;