上传者: zjl8008
|
上传时间: 2026-02-03 22:29:02
|
文件大小: 917B
|
文件类型: TXT
xp系统用了3年了,前天重新安装了系统换成了win2003server,因为有不同版本的源码,分别安装了pb8\pb9\pb12.1
使用过程中发现pb9打开原来源码的有些window时,报内存不能为read错误!而这些窗口以前没有任何问题,且也没有特殊的控件。
pb9版本9.03,8716,8836 这3版本种情况均有此问题,怎么办啊,不会再重新安装操作系统吧?
发现pb8.04 个别窗口存在同样问题!难道是操作系统盘版本问题?
Full build可以完成,但还是一样,不管用。现在我把pb9卸了,只保留运行环境的dll文件,发现在源码中打开报内存不能为read的窗口,在执行编绎好的exe运行那个窗口时也是出错的。一样的错误!
解决方案,见下载附件
### pb9 打开源码中有些 window 时报内存不能为 read 错误解决方案
#### 问题背景
在使用 PowerBuilder(简称 PB)开发工具的过程中,一位开发者遇到在 Windows 2003 Server 操作系统下使用 PB9 打开源代码中的某些窗口时,会触发“内存不能为 read”错误的问题。这个问题在之前的 Windows XP 操作系统上并未出现,并且这些窗口中没有使用特殊的控件。
#### 环境信息
- **操作系统**:Windows 2003 Server
- **PowerBuilder 版本**:PB8、PB9、PB12.1
- **受影响的 PB9 版本**:9.03、8716、8836
- **问题描述**:在打开某些窗口时出现“内存不能为 read”的错误提示。
#### 探索过程
1. **初步尝试**:
- 安装了多个版本的 PB,包括 PB8、PB9 和 PB12.1。
- 发现 PB9 在打开特定窗口时会出现“内存不能为 read”的错误。
- 同时发现 PB8 的某个版本也存在类似问题。
2. **进一步排查**:
- 尝试了 Full Build,但问题依旧存在。
- 卸载了 PB9 开发环境,仅保留运行所需的 DLL 文件。
- 使用编译后的 EXE 文件运行出现问题的窗口,仍然出现了同样的错误。
3. **分析原因**:
- 问题不仅仅出现在 PB9 上,PB8 的一个版本也出现了同样的问题,这可能意味着问题并非完全由 PB9 版本引起。
- 考虑到在 Windows XP 上这些问题并未出现,因此推测可能是操作系统版本或配置差异导致的问题。
- 排除了重新安装操作系统的选项,因为这并不是根本解决问题的方法。
#### 解决方案
针对上述问题,开发者尝试了多种解决方法,并最终找到了有效的解决方案:
1. **检查和修复 DataWindow 控件**:
- 首先检查出现问题的窗口是否涉及 DataWindow 控件。
- 对于使用 DataWindow 的窗口,确保控件的配置正确无误。
- 如果发现问题出在 DataWindow 控件上,尝试更新或替换该控件。
2. **操作系统兼容性设置**:
- 考虑到问题可能与操作系统有关,可以在 PB 应用程序上设置兼容性模式,尝试选择 Windows XP 或其他更早的操作系统作为兼容目标。
- 可以尝试以管理员权限运行 PB 应用程序,有时候权限不足也会导致类似的内存访问问题。
3. **更新 PB 版本**:
- 如果上述方法都无法解决问题,考虑升级到最新的 PB 版本,比如 PB12.1 或更高版本。
- 新版本通常包含对旧版本中存在的 bug 的修复以及对新操作系统的支持改进。
4. **第三方库和插件**:
- 检查是否有使用第三方库或插件。
- 如果有,尝试禁用或更新这些第三方组件,以排除它们可能引起的冲突。
5. **代码审查和调试**:
- 仔细审查出现问题的窗口的代码,查找潜在的编程错误或逻辑缺陷。
- 使用 PB 的调试功能来定位问题的具体位置。
- 确保所有变量和对象在使用之前都已正确初始化。
6. **社区支持**:
- 如果以上方法都无法解决问题,可以寻求 PowerBuilder 社区的帮助,通过论坛、官方文档或其他开发者的经验分享来寻找灵感。
#### 结论
通过上述一系列的排查和解决步骤,可以有效定位并解决 PB9 在打开某些窗口时出现“内存不能为 read”的问题。这不仅有助于提高开发效率,还能确保应用程序的稳定性和用户体验。