2012-03-14 158 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()