2012-03-14 73 views
0

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

我该怎么做?

我试图..

S_TEXT = “[数据库]” + “〜R〜N” + &

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

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

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

      "DB=" + "~r~n" 

FILEWRITE(config.ini中”,S_TEXT)

但它说无效的参数文件

回答

3

为了测试文件是否存在,有FileExists(filename),它返回一个布尔值。该功能只需要一个文件名来执行检查。

相反,FileWrite()需要在上打开文件。它会给出一个“文件号”,由FileOpen()的调用生成(并且该文件号还应在过程结束时提供给FileClose())。

为什么不看PowerBuilder文档?有一个示例为:从PB IDE中,按F1,看看FileWrite PowerScript function部分,然后按按钮。 (令人惊讶的是,该示例没有提到FileClose(),但您需要调用它; o)

不要忘记检查无效文件编号(例如,如果文件名不存在,或者文件已存在正在使用)。

编辑:在评论澄清说,他希望能够调用SetProfileString()上不存在的ini文件(即不能创建一个新的ini文件)的OP,这里是新的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") 
+0

我确实打过电话并试过这些函数。我的问题是如何创建该文件,我可以使用FileOpen()打开一个不存在的文件,所以我可以将它们写入文件?我正在做一个Filewrite,因为该文件还没有存在,如果它我会使用setprofilestring,而不是因为我打开一个INI。 – Sid 2012-03-15 01:01:48

+0

@Sid:关于文件的创建,这个帮助看起来很清楚:假设你给了FileOpen()'_fileaccess_,它可以打开一个现有的文件来读取或者创建一个新的文件(或者重写一个现有文件)写入。现在,关于一个不存在的文件上的'SetProfileString()',我测试了它不能创建一个新文件。但它可以填满一个空的。我编辑了我的答案来提供一个例子。 – Seki 2012-03-15 09:42:58

+0

对不起,先生,但我的问题是没有使用这些功能,但如何创建文件,如果它不存在。但是,谢谢,我有一些工作,最后做到了。再次感谢 – Sid 2012-03-15 10:02:44

0

这是我的做法。

如果INI文件不存在。

数据存储DS_1

DS_1 = CREATE数据存储

// d_dummy是一个表格DW与1列作为字符串,字符(100)

ds_1.dataobject = 'd_dummy'

l_row = ds_1.InsertRow(0)

ds_1.SetItem(l_row, '虚设', '[数据库]')

l_row = ds_1.InsertRow(0)

ds_1.SetItem(l_row, '虚设', '服务器=')

l_row = DS_1。的InsertRow(0)

ds_1.SetItem(l_row, '虚设', '用户ID =')

l_row = ds_1.InsertRow(0)

ds_1.SetItem(l_row, '虚设','口令=')

l_row = ds_1.InsertRow(0)

ds_1.SetItem(l_row, '虚设', 'DB =')

ds_1.SaveAs( “INIFILE.ini”,文本!,FALSE)

然后我用ProfileString()和SetProfileString()