我正在将一个非常古老的(10年以上)应用程序升级到最新的Delphi XE.我一直有很多错误
Incompatible types: 'WideChar' and 'AnsiChar'
Run Code Online (Sandbox Code Playgroud)
我只是将char转换为正确的类型:ex.AWideChar = WideChar(fncReturnsChar);
这会导致问题吗?
我正在将一些代码移植到Delphi XE并注意到如果我使用Application.Handle来获取程序的句柄,Delphi会抛出一个错误并拒绝编译,说:
Undeclared identifier: 'Handle'
Run Code Online (Sandbox Code Playgroud)
当我尝试调用Application.ProcessMessages时会发生同样的行为.我认为必须转移一些未在Unicode迁移指南中列出的内容.
"应用程序"的功能和变量在哪里?
我正在查看两个代码副本,其中一个是myForm.Hide,另一个是myForm.Visible:= False.我不记得为什么我改变了这个,如果一个是bug修复或者是否有任何差异.
我将所有程序的设置存储在appdata目录%appdata%/ MyProgram中.当出现问题并且用户必须重新安装时,我想询问是否删除该目录中的数据.我正在使用Inno Setup并添加了一个自定义页面来提示用户:
if DirExists(ExpandConstant('{userappdata}\MyProgram')) then
begin
appdataPage := CreateInputOptionPage(wpSelectTasks,
'Stored Settings', 'Would you like to remove settings before re-install?',
'Please specify if you would like to remove the current settings before re-installing MyProgram.', True, False);
appdataPage.Add('Remove current settings (Recommended if MyProgram is having problems).');
appdataPage.Add('Keep all my settings and just reinstall.');
//appdataPage.Add();
appdataPage.Values[0] := true;
end;
Run Code Online (Sandbox Code Playgroud)
安装程序不会将数据放在那里,但程序会生成它,因此卸载程序不会自动删除它.我也不能指望卸载程序正在运行; 很多用户只是再次运行安装程序.
如何处理此对话框中的选择,以便他们点击"重新安装前删除"我删除文件夹%appdata%/ MyProgram?我不想总是删除它,但给他们选择.
我一直遇到错误,其中对象以某种方式被释放,但我们最终调用FreeMem.当然这会导致错误,因为内存已被释放并引发错误.
我知道try-catch块可能会修复它,但这是很多try-catch块.使用常规object.free避免这种情况的方法是FreeAndNil(object),但我找不到FreeMem的等价物.在释放之前测试是否分配的东西.
这里的最佳解决方案是易于阅读,可维护性和稳定性.
我正在使用Mercurial来编写我的源代码版本,并且对它很新,并且仍在了解它的功能.我通过添加整个文件夹和所有子目录将我的源添加到存储库.
问题是现在我有临时文件显示为'已更改'.我意识到我根本不需要跟踪这些临时文件.有什么方法我可以告诉mercurial忘记具有特定扩展名的所有文件,例如.~temp?
我正在从Delphi 6升级到Delphi XE.在Delphi 6中,我使用HTML帮助文件(.chm)并使用StoHtmlHelp来创建它,以便我可以调用上下文敏感的帮助,就像我们以前调用.hlp文件一样.我正在升级到Delphi XE,所以我需要使用原生HTML帮助支持.
我知道我应该将HTMLHelpViewer添加到项目的uses子句中,但是当我这样做时,我得到一个编译器警告它无法找到该文件.
无法编译使用过的单位'HTMLHelpViewer.pas'
有谁知道为什么Delphi默认没有找到这个文件?它应该内置.
我正在Delphi中编写一个程序,并包含一个包含一些汇编代码(Pipes.pas)的库.当我运行调用一个名为StdWndProc的函数的代码时,我收到了访问冲突.该过程是一个汇编函数,其中包含汇编代码.
前段时间我更新了这段代码(Pipes.pas)以包含unicode支持和其他内容,但我没有弄清楚这个程序集正在做什么.关于这里出了什么问题的任何想法?
我正在64位计算机上运行,可能是这个程序集是32位并且在64位处理器上运行不正确(该项目的目标是32位版本).