OpenWithParm打开窗口导致的PB11.5编译问题解决之道

YFCTA 2012-02-13 12:04:46
问题描述如下
现象: pb11.5将程序打包成一个独立的exe文件,不包含其他pbd文件或者dll文件,编译通过,程序可以执行,但当打开用OpenWithParm方式打开的功能模块时,程序报错“unknown object type: w_xxx”退出,其中w_xxx为程序中的一窗口对象。

尝试解决办法:
尝试一,在应用的open事件中添加 IF 语句,语句中只包含 open(w_xxx);

尝试二,在应用中自定义事件【事件程序执行不会调用】,事件中只包含 open(w_xxx);

尝试一和尝试二在编译时,pb编译预处理结束后,编译终止,pb程序中未提示任何错误信息,在操作系统临时文件夹下,找不到编译log。

尝试三,在应用中新建一窗口对象,在该窗口对象的自定义函数中添加open(w_xxx)——编译通过,但程序任然报错“unknown object type: w_xxx”退出。

请有这方面经验的朋友给予指导,先谢了。
...全文
304 10 打赏 收藏 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
YFCTA 2012-02-13
  • 打赏
  • 举报
回复
TO fjfzyufan

谢谢你的回复,数据窗口不存在此问题——数据窗口之前有制作pbr文件。
YFCTA 2012-02-13
  • 打赏
  • 举报
回复
TO sjlion

谢谢你给的思路。

对此问题,已明确问题所在,所以十分希望通过大家努力来真正解决。
YFCTA 2012-02-13
  • 打赏
  • 举报
回复
TO PB8

谢谢你的建议,数据窗口之前有制作pbr文件,所以不存在问题;

“要么把它整个你的主PBL中”——让我想起了早些年的确也曾用过此方法,大喜,将w_xxx移入应用所在pbl,编译,满以为问题可以解决,但程序执行依旧报同意的错。

我把关键代码摘抄出来,示例如下,可能大家好更好理解
window iw_window
OpenWithParm(iw_window,"","w_xxx",w_main) 【说明:w_main 是应用的主窗口】

问题已确诊是因为OpenWithParm方式打开窗口,PB不能找到w_xxx窗口而报错,如果把上述代码换成
Open(w_xxx),则一切正常,但程序功能需要以OpenWithParm方式打开。
fjfzyufan 2012-02-13
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 pb8 的回复:]
在多个pbl的情况下,编译成单个EXE时,如果只是动态引用数据窗口对象,通过指定资源文件就可以了,如果有其它自定义窗口或对象,要么把它整个你的主PBL中,要么只能把它所在的pbl单独编译成pbd,通过AddtoLibraryList加载到应用,再进行引用
[/Quote]

同意。 估计你有许多数据窗口也是没法显示的。
the7thsense 2012-02-13
  • 打赏
  • 举报
回复
mark
sjlion 2012-02-13
  • 打赏
  • 举报
回复
不行的话就别费那劲了,先编译成几个文件,再用VMware ThinApp打包成单个exe,效果一样。
pb8 2012-02-13
  • 打赏
  • 举报
回复
在多个pbl的情况下,编译成单个EXE时,如果只是动态引用数据窗口对象,通过指定资源文件就可以了,如果有其它自定义窗口或对象,要么把它整个你的主PBL中,要么只能把它所在的pbl单独编译成pbd,通过AddtoLibraryList加载到应用,再进行引用
YFCTA 2012-02-13
  • 打赏
  • 举报
回复
补充说明,程序中的OpenWithParm是下面格式用法,

OpenWithParm(windowvar,parameter,windowtype{,parent})

非通常大家给响应窗口传参的用法
OpenWithParm(windowvar,parameter{,parent})

YFCTA 2012-02-13
  • 打赏
  • 举报
回复
TO xuam

谢谢你的回复!w_xxx因为程序功能需要时main型,请问还有其他办法吗
xuam 2012-02-13
  • 打赏
  • 举报
回复
w_xxx 要是response类型.
打开链接下载源码: https://pan.quark.cn/s/e18529987bb9 ### ETS中文教程:KNX施耐德智能家居 #### 知识点一:ETS软件概述与启动 ETS(Engineering Tool Software)是由施耐德电气研发的一款专业设计工具,其核心功能在于构建和配置基于KNX标准的智能家居及楼宇自动化系统。KNX代表一种国际公认的开放式标准,该标准在楼宇自动化领域得到广泛应用,其目的是实现不同品牌设备之间的互联互通。 **软件启动方法**:ETS软件可以通过双击其图标来启动,或者从开始菜单中选择“File”->“New Project”,亦或直接使用Ctrl+N快捷键来启动该软件。 #### 知识点二:工程项目创建 在启动新的工程项目时,需要遵循以下流程: 1. **项目命名**:推荐使用数字与字母的组合来命名项目,例如“Officebuildings”,这样的命名方式有助于日后的管理和识别。 2. **构建建筑物模型**:在“Buildings/Functions”部分添加建筑物,自定义其名称(例如“mg”),并确认创建操作。 3. **添加房间**:针对每一个建筑物,可以进一步添加房间,同样地,为房间自定义名称(如“1F”),以此来构建完整的建筑模型。 #### 知识点三:设备加载与配置 设备加载是ETS软件中的核心环节,其作用在于将实际的智能设备(包括开关、传感器等)整合到项目中: 1. **设备加载过程**:在目标房间处进行右键点击,选择“Add Devices”,随后通过“Product Finder”对话框选择合适的制造商和产品系列,以此来加载所需的设备类型。 2. **地址分配**:在设备加载完成后,应手动为其分配独...
代码下载链接: https://pan.quark.cn/s/a4b39357ea24 在客户端编程中,有时我们需要对用户上传的Excel文件内容进行管理,并将其转化为JSON格式以便进行后续操作或与服务器端进行数据交换。这一过程通常包含文件读取、数据解析以及格式转换等步骤。以下是一些关于如何运用JavaScript达成这一功能的核心要点: 1. **File API**:在当前版本的浏览器中,我们可以借助File API来获取用户上传的文件。`FileReader`对象提供了异步获取文件内容的方法,例如`readAsArrayBuffer()`,用于读取文件内容。 2. **XLSX库**:由于浏览器自带的API不直接支持Excel文件的解析,我们需要借助第三方库。其中,`xlsx`库是一个广受欢迎的选择,它能解析多种Excel文件格式(如XLS、XLSX、CSV等)并提供便捷的数据操作接口。 3. **获取Excel文件**:借助`xlsx`库,我们首先需要将File API获取到的`ArrayBuffer`转换为可解析的格式。例如,可以调用`XLSX.read(arrayBuffer, {type: buffer})`进行格式转换。 4. **解析工作表内容**:`xlsx`库解析完成后,会返回一个对象,其中包含了所有工作表的信息。我们可以通过`XLSX.utils.sheet_to_json(worksheet)`方法将单个工作表转换为二维数组,这类似于Excel中的表格数据。 5. **转化为JSON对象**:二维数组可以很方便地转化为JSON对象。遍历数组,每行数据作为JSON对象的一个属性,属性名为单元格的列名,属性值为单元格的值。可以使用`Arr...

401

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder 非技术版
社区管理员
  • 非技术版社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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