使用AnsiString,当程序退出的时候出现访问内存错误,各位高手帮我看看吧

Wind_LQ 2002-02-17 08:08:34
bool GetImgPath(AnsiString &path)
{
//结构体变量,存储系统版本信息
struct OSVERSIONINFO
{
DWORD dwOSVersionInfoSize;
DWORD dwMajorVersion;
DWORD dwMinorVersion;
DWORD dwBuildNumber;
DWORD dwPlatformId;
TCHAR szCSDVersion[128];
} OSVer;

//得到系统版本信息
OSVer.dwOSVersionInfoSize=sizeof(OSVer);
GetVersionEx((OSVERSIONINFOA *)&OSVer);

for(path="";path="",*_environ;_environ++)
{
//如果环境变量是windir则取出路径
path=*_environ;
if (0!=strcmp(path.SubString(1,7).c_str(),"windir=")) continue;
path=path.SubString(8,path.Length()-7);
break;
}

//如果没找到路径则返回错误
if (0==path.Length()) return false;

//如果是Win98系统
if (4==OSVer.dwMajorVersion || 0!=OSVer.dwMinorVersion)
{
path+="\\KodakImg.exe";
return true;
}

if (0==OSVer.dwMinorVersion)
{
path=path.SubString(1,3);
path+="Program Files\\Windows NT\\Accessories\\ImageVue";
//如果是WinNT系统
if (4==OSVer.dwMajorVersion)
{
path+="\\WangImg.exe";
return true;
}
//如果是Win2K系统
if (5==OSVer.dwMajorVersion)
{
path+="\\KodakImg.exe";
return true;
}
}

return false;
}
...全文
118 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
Wind_LQ 2002-02-18
  • 打赏
  • 举报
回复
我已经知道了,因为_environ是环境变量数组指针,而我修改了它所以在程序退出的时候出现问题。
kingcaiyao 2002-02-18
  • 打赏
  • 举报
回复
你贴出的代没有问题?
NowCan 2002-02-18
  • 打赏
  • 举报
回复
看不出来。
invalid 2002-02-17
  • 打赏
  • 举报
回复
以上代码没有错误,我测试了基本能正常工作,可能是你的其它代码有问题吧。
aawolf 2002-02-17
  • 打赏
  • 举报
回复
应该不是AnsiString的问题吧,除非你的代码是写在DLL里的。我仅仅是猜的,没验证代码。

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧