我正在尝试检查文件是否存在(INI) 如果不是..它应该使用正确的字符串创建文件。
我是怎么做到的?
我试过..
s_text =“[DATABASE]”+“〜r~n”+&
"Server=" + "~r~n" + & "UserId=" + "~r~n" + & "Password=" + "~r~n" + & "DB=" + "~r~n"
FileWrite(config.ini“,s_text)
但它表示文件无效参数
答案 0 :(得分:3)
为了测试文件是否存在,有FileExists( filename )
返回一个布尔值。该函数只需要一个文件名来执行检查。
相反,FileWrite()
需要处理打开的文件。它被赋予一个“文件号”,该号码是通过调用FileOpen()
生成的(并且在该过程结束时该文件号也应该被赋予FileClose()
)。
为什么不查看PowerBuilder文档?有一个示例:从PB IDE,按 F1 ,查看FileWrite PowerScript function
部分,然后按示例按钮。 (令人惊讶的是,该示例未提及FileClose()
,但您需要调用它; o)
不要忘记检查无效的文件编号(例如,如果文件名不存在,或者文件已在使用中)。
编辑:,因为OP在评论中澄清了他希望能够在不存在的ini文件(无法创建新的ini文件)上调用SetProfileString()
,这是一个新的ini文件创建示例:
int li_file
string ls_ini = "config.ini"
li_file = fileopen(ls_ini, LineMode!, write!)
FileClose(li_file)
SetProfileString(ls_ini, "Database", "Server", "host")
SetProfileString(ls_ini, "Database", "UserId", "foo")
SetProfileString(ls_ini, "Database", "Password", "bar")
SetProfileString(ls_ini, "Database", "DB", "baz")
答案 1 :(得分:0)
这是我的方法。
如果INI文件不存在。
datastore ds_1
ds_1 =创建数据存储区
// d_dummy是一个Tabular DW,其中1列用作字符串,char(100)
ds_1.dataobject ='d_dummy'
l_row = ds_1.InsertRow(0)
ds_1.SetItem(l_row,'dummy','[DATABASE]')
l_row = ds_1.InsertRow(0)
ds_1.SetItem(l_row,'dummy','Server =')
l_row = ds_1.InsertRow(0)
ds_1.SetItem(l_row,'dummy','UserId =')
l_row = ds_1.InsertRow(0)
ds_1.SetItem(l_row,'dummy','Password =')
l_row = ds_1.InsertRow(0)
ds_1.SetItem(l_row,'dummy','DB =')
ds_1.SaveAs(“INIFILE.ini”,Text!,FALSE)
然后我使用了ProfileString()和SetProfileString()