使用AnsiString,当程序退出的时候出现访问内存错误,各位高手帮我看看吧
{
//结构体变量,存储系统版本信息
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;
}
相关推荐
官方Quartz.NET 2.3.1 源码+15个示例
官方Quartz.NET 2.3.1 源码(官方2015.1.15更新) 附带15个示例 全部可用
Lazarus/FPC跨平台实战:Windows命令行工具迁移Linux全指南
在服务器部署、自动化流水线等场景下,命令行工具常需跨平台运行。Free Pascal Compiler(FPC)与Lazarus IDE作为成熟的跨平台编译方案,可让同一套Pascal代码在Windows和Linux下编译为原生可执行文件,无需重写业务逻辑或依赖虚拟化环境。文章从跨平台开发的基础概念出发,梳理FPC编译原理及其技术优势,结合工程实践详解命令行工具迁移至Linux的完整路径:包括环境搭建、路径分隔符与换行符差异、中文编码处理、文件权限适配、交叉编译及静态链接打包等关键环节。同时分享了实际迁移中
Delphi7老项目Unicode改造:TNT Controls安装与替换实操指南
Unicode字符集解决了中文、生僻字及特殊符号在软件中的统一表示问题,但Delphi7基于AnsiString的原生VCL控件无法直接处理,导致界面与文件读写常出现乱码。TNT Controls控件包为老项目提供一套基于WideString和Windows Wide API的Unicode控件层,从TNT编辑框、备忘录到窗体组件,能有效绕开ANSI瓶颈。该方案适合维护中的Delphi7老系统,也是向新版本Delphi迁移前的过渡手段。围绕TNT Controls的安装,需要合理配置库路径、编译运行包与设计
Delphi集成Python实现jieba中文分词实战与踩坑记录
中文分词作为自然语言处理的基础环节,在文本检索、词频统计等领域至关重要。基于统计词典的分词算法通过前缀词典和隐马尔可夫模型,有效处理未登录词与歧义切分。成熟工具如jieba分词,凭借丰富词库与多模式支持,成为工程中最常用的方案。在大型老系统改造中,Delphi等桌面应用常遇到中文文本处理瓶颈,通过Python4Delphi实现Delphi与Python的混合编程,嵌入Python解释器调用jieba,能快速获得工业级分词能力。围绕实际项目,分享Delphi集成Python调用jieba进行中文分词的完整源码
Quartz.Net 2.2.3 不使用配置文件 简单示例
Quartz.Net2.2.3 不使用配置文件 自动执行任务 这是一个简单示例


