最近将一个程序从D7转换到D2010,在部分WINXP系统的电脑运行错误,错误信息为:Access violation at address 0040303F in module 'OnEyeManager.exe'. Write of address 0038003C.而在另外一些WINXP系统的电脑上运行正常,开始以为是操作系统版本的原因,因为不能运行电脑的操作系统都是电脑公司装的,就把其中一台的系统格了重新安装,还是运行出错。然后就整了个虚拟机,装上D2010,编译没报错,逐步调试,发现出错的地方是Copy函数,我疯狂了......求大神指导!D7转D2010WINXP运行出错

解决方案 »

  1.   

    D2009-用ANSI,2009+用Unicode,字符串编码问题。贴一下代码
      

  2.   


    function FormatDir(aDir: string): string;
    begin
      Result := aDir;
      if Length(Trim(aDir)) > 2 then
      begin
        if Copy(Trim(aDir), Length(Trim(aDir)), 1) <> '\' then
          Result := aDir + '\';
      end;
    end;
    我觉得不是编码的问题,如果是的话应该都不能运行,可现在是部分WINXP的系统不能运行
      

  3.   

    @HSFZXJY
    我觉得不是编码的问题,如果是的话应该都不能运行,可现在是部分WINXP的系统不能运行
      

  4.   

    if aDir[length(aDir)] <> '\' then aDir := aDir + '\'
      

  5.   

    DELPHI有自带的函数添加目录结束符:function IncludeTrailingPathDelimiter(const S: string): string;
    begin
      Result := S;
      if not IsPathDelimiter(Result, Length(Result)) then
        Result := Result + PathDelim;
    end;
      

  6.   

    找不出原因,只能将不能用的电脑系统改用WIN7,谢谢楼上几位的帮助