2010-04-22 61 views
4

如何使用PowerBuilder中的文件函数在任何目录(即c:\,d:\等)中搜索.txt文件?Powerbuilder查询

+0

您是否正在寻找搜索目录*为* .txt文件,或扫描*。特定内容的目录中的txt文件?一个目录或子树?什么PB版本和目标类型? – Terry 2010-04-23 18:49:17

回答

3

您可以使用ListBox控件根据给定的字符串模式(* .txt,myfile.txt,.etc)获取文件/目录列表。查看帮助中的DirList函数。下面是here的一个示例,演示如何在不将视觉效果放在窗口上的情况下使用ListBox控件。

string ls_files[] 
window lw_1 
listbox llb_1 
int li_items, li_i 

Open(lw_1) 

lw_1.openUserObject(llb_1) 

llb_1.DirList(sFileSpec, uFileType) 

li_items = llb_1.TotalItems() 

For li_i = 1 to li_items 

ls_files[ li_i ] = llb_1.Text(li_i) 

Next 

lw_1.closeUserObject(llb_1) 

Close(lw_1) 
+0

这是非常烦人的,你必须有一个窗口控制DirList工作。它增加了不必要的步骤,特别是当我从NVO工作时。 – 2010-04-27 16:30:18

+0

我相信它不一定是可见的。您只需在代码中添加列表框并将其删除即可。 – 2017-07-23 04:52:31

6

所以,如果你正在做的是寻找文件,您可以用listbox.DirList()做到这一点,或者如果你想做到这一点没有被捆绑到一个窗口或控件,可以调用WinAPI的函数来做到这一点:

Function long FindFirstFileW (ref string filename, ref os_finddata findfiledata) library "KERNEL32.DLL" alias for "FindFirstFileW" 
Function boolean FindNextFileW (long handle, ref os_finddata findfiledata) library "KERNEL32.DLL" alias for "FindNextFileW" 

其中os_finddata被定义为

unsignedlong  ul_fileattributes 
os_filedatetime  str_creationtime 
os_filedatetime  str_lastaccesstime 
os_filedatetime  str_lastwritetime 
unsignedlong  ul_filesizehigh 
unsignedlong  ul_filesizelow 
unsignedlong  ul_reserved0 
unsignedlong  ul_reserved1 
character  ch_filename[260] 
character  ch_alternatefilename[14] 

和os_filedatetime被定义为

unsignedlong  ul_lowdatetime 
unsignedlong  ul_highdatetime 

如果你想在对象(pfcapsrv.pbl)如何使用这些,看在PFC的例子(PowerBuilder的基础类,可在CodeXchange)pfc_n_cst_filesrvunicode.of_DirList()。 (这就是这些原型和结构从复制,顺便说一句。)

祝你好运,

特里