2014-03-27 25 views
0

我有一個tcl代碼,它爲某些參數生成一些值。現在我想存儲這些值並將它們用於相同的程序但使用不同的參數。可以這樣做嗎?,使用同一程序的生成值?

+0

你的問題不是很清楚。你能詳細說明一下嗎? – Jerry

+0

我想要使用第一次生成的變量的值。第二次運行 – Pac

+0

您也許可以將值寫入文件,然後讀取文件以在第二次運行中獲取它們? – Jerry

回答

1

要在整個程序的一次運行中存儲以後的值,請將其置於變量中。

set theVariable "the value is foo bar" 

要存儲在程序的另一個運行後一個值,你可能需要將其寫入文件。最簡單的方法是這樣的:

# To store: 
set f [open theSettingsFile.dat w] 
puts $f $theVariable 
close $f 
# To load: 
set f [open theSettingsFile.dat] 
set theVariable [gets $f] 
close $f 

Tcl的是TCL,你也可以將它保存爲一個腳本,您可以source

# To store: 
set f [open theSettingsFile.tcl] 
puts $f [list set theVariable $theVariable] 
close $f 
# To load: 
source theSettingsFile.tcl 

對於複雜事情,使用像SQLite這樣的數據庫可能是一個好主意:

# To store: 
package require sqlite3 
sqlite3 db theSettings.db 
db eval {CREATE TABLE IF NOT EXISTS settings (key TEXT, value TEXT)} 
# Note; the below is SQL-injection safe  
db eval {INSERT INTO settings (key, value) VALUES ('theVariable',$theVariable)} 
db close 
# To load: 
package require sqlite3 
sqlite3 db theSettings.db 
db eval {SELECT value FROM settings WHERE key = 'theVariable'} { 
    set theVariable $value 
} 
db close 

但是,這是保存一個簡單的字符串大規模矯枉過正。