Powerbuilder创建文件

时间:2012-03-14 10:32:33

标签: powerbuilder

我正在尝试检查文件是否存在(INI) 如果不是..它应该使用正确的字符串创建文件。

我是怎么做到的?

我试过..

  

s_text =“[DATABASE]”+“〜r~n”+&

          "Server="   + "~r~n" + &

          "UserId="   + "~r~n" + &

          "Password=" + "~r~n" + &

          "DB="   + "~r~n" 
     

FileWrite(config.ini“,s_text)

但它表示文件无效参数

2 个答案:

答案 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()