Powerbuilder查询

时间:2010-04-22 10:05:41

标签: powerbuilder

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

2 个答案:

答案 0 :(得分: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_n_cst_filesrvunicode.of_DirList()中的PFC(PowerBuilder基础类,可从CodeXchange获得)。 (这就是这些原型和结构从BTW复制的地方。)

祝你好运,

特里

答案 1 :(得分: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 )