当前位置: 代码迷 >> PB >> PB 保存字符串成文本文件后,相对路径变了,该怎么解决
  详细解决方案

PB 保存字符串成文本文件后,相对路径变了,该怎么解决

热度:189   发布时间:2016-04-29 10:30:53.0
PB 保存字符串成文本文件后,相对路径变了
程序使用图片均用的相对路径 例如:img\界面.jpg 可是做数据导出时,选完保存路径点保存,所有的图片就都不显示了。
  我发现做保存文档后,相对路径已经变成该文档的保存位置了。。。汗啊 
  

  高人们先指点下,不行明天来了我把保存函数代码贴出来

------解决方案--------------------
1 在程序open是使用GetCurrentDirectory()函数获取当前目录,路径改变时用SetCurrentDirectory把路径设置回来。

2 最好是给图片设置绝对路径:
//全局
string gs_path

//Application open
gs_path = GetCurrentDirectory()

//设置p_1路径
p_1.picturename = gs_path + '\img\界面.jpg'

------解决方案--------------------
这个不是PB的问题,其它语言也会有,WINDOWS-API就这么设置的。

有时有好处,

就好像你用PB打开 *.srw文件,*.srp里面的东西的PBL都是相对路径的,程序员就不需要写专门写一大堆代码来取对应文件的相对路径.


但大多数时候,觉得它真的是自以为聪明,我认为更多的情况导致我们要写更多的代码.
------解决方案--------------------
用资源文件来处理

3、资源文件的使用

  可执行文件或动态库中可以包含一些资源(图形、图标或指针),也可以将它们作为单独的资源文件(.pbr文件)保存。

  (1)单独的分布资源

  若某资源不包含在可执行文件或动态库中,则在执行应用程序引用它时,PowerBuilder按查询路径查找该资源,因此,必须将它与应用程序一起放在查询路径下。

  Windows的查询路径为:当前目录,Windows目录,Windows的System目录和PATH环境变量中设置的所有目录。

  (2)资源文件

  可以使用PowerBuilder资源文件(.pbr)替代单独的资源,其中列出所有的动态分配的资源也可以包含动态分配的数据窗口对象。PowerBuilder将这些资源编译后放入可执行文件或.pbd文件中,这些资源在执行时可直接使用。

  若给数据窗口控件动态分配数据窗口对象,则必须创建一个资源文件,且在可执行文件或动态库文件中包含该对象,或在一个单独的动态库中包含它。

  资源文件(.pbr)是一个ASCII码文件,在其中列出了应用程序要有到的各种资源(如.bmp、.cur、.ico、.rle和.wmf文件)和数据窗口对象。使用文本编辑器(如Windows的记事本)创建一个文本文件,其中列出在应用中动态引用的资源文件,一行列出一个资源,格式如:

appico.ico
appbmp1.bmp
appbmp2.bmp
……

  以上文件和对象都假设是在当前目录中,如果存在于另一个目录中,则必须包含所在路径,格式如:

e:\myapp\test.jpg。

  在.pbr文件中指定的文件名必须与在脚本中引用的资源匹配,若引用时包含路径,则在.pbr文件中也必须包含同一路径,否则因PowerBuilder在执行时只是简单地进行字符串比较而导致无法发现该资源。

  若应用程序中包含有动态引用的数据窗口,则在.pbr文件中必须包含数据窗口对象,格式如:

myapp.pbl(dw_infodisplay)

  其中:myapp.pbl为应用程序库,dw_infodisplay为数据窗口对象,一般是在当前目录或指定路径。在执行时,若引用资源,PowerBuilder首先检查可执行文件,找不到再在.pbd文件中、文件查询路径的目录中查找。

  在工程画笔中建立工程对象时可以为可执行文件或每一个动态库指定它使用的资源文件,也可以在库管理画笔中建立动态库时使用。