刚刚谷歌了一下,发现网上也有一些人说了解决办法,是因为.dfm乱码造成的。但是我的这个并不是单纯的乱码导致的。
我们公司用svn存放代码,一个项目好多人改,偶尔会修改公共的模块。如果两个人都有修改,后提交者需要先更新再提交,svn会自动合并两个版本文件为一个文件。问题就出在这里:如果两个人改的不同位置,合并不会出问题。如果两个人改的位置相同(A改了界面label1的位置,B也改了他的位置,dfm中label1处标明位置的代码就有两个版本了),在后者合并时,svn会在两者之间加上版本号以及两个版本改动的代码和一些特殊字符(用过svn的都知道,会用====分隔开冲突的地方)。
示例:
解决办法:用ultraedit或者notepad++打开报错的.dfm,逐行检验代码,看是否有特殊字符。如果有,删除或修改为正确的,全部检查完毕后保存。关闭Delphi,重新启动并打开项目。完成!