更新:我已經添加以下代碼:德爾福ini文件VISTA/XP/WIN7
function TSettingsForm.AppDataPath: string;
//CSIDL_APPDATA Individual user Data
//CSIDL_COMMON_APPDATA Common to Computer Data
// works so long as people have at least IE 4. (and Win95 or better)
var
r: Bool;
path: array[0..Max_Path] of Char;
begin
r := ShGetSpecialFolderPath(0, path, CSIDL_APPDATA, False) ;
if r then result := path
else result := '';
end;
而且我已經改變了setinifilename功能(見下文)。它不會創建文件夾結構。
--End update--
我落伍了,就什麼和不該做。這是我目前正在保存我的軟件的設置。我剛剛在Vista上測試過它沒有以管理員身份登錄,並且它給了我一個錯誤消息,無法寫入ini文件。所以我猜我應該將數據寫入數據文件夾?我以前從未使用vista/win7,並且希望此軟件能夠與Windows 2K +兼容。我應該怎麼做才能保存設置。我也真的不想亂搞註冊表,因爲你添加到它的每一點點,放慢計算機只是更多...(或似乎是這樣)
感謝您的任何輸入。
procedure TSettingsForm.setinifilename;
var filename:string;
Path:string;
begin
filename:='key.ini';
path:=AppDataPath+'\MyCompanyName\ProductName\';
if NOT DirectoryExists(path) then
CreateDir(path);
inifilename:= path+filename;
end;
procedure TSettingsForm.SaveSettings;
var
appINI: TIniFile;
begin
appINI := TIniFile.Create(inifilename) ;
try
low:= Trunc (edt_low.value);
high:=Trunc (edt_high.value);
appINI.WriteInteger('SPEED','LOW',low);
appINI.WriteInteger('SPEED','HIGH',high);
appINI.WriteString('PROXY','SERVER',edtProxyServer.Text);
appINI.WriteString('PROXY','PORT',edtProxyPort.Text);
appINI.WriteString('PROXY','USERNAME',edtProxyUserName.Text);
appINI.WriteString('PROXY','PASSWORD',edtProxyPass.Text);
// status.text:='Saved Data';
finally
appIni.Free;
end;
end;
procedure TSettingsForm.GetSettings;
Var
appINI : TIniFile;
begin
appINI := TIniFile.Create(inifilename) ;
try
//if no last user return an empty string
edt_low.value:= appINI.ReadInteger('SPEED','LOW',0);
edt_high.value:= appINI.ReadInteger('SPEED','HIGH',0);
low:= Trunc (edt_low.Value);
high := Trunc (edt_high.Value);
edtProxyServer.Text:=appINI.ReadString('PROXY','SERVER','');
edtProxyPort.Text:=appINI.ReadString('PROXY','PORT','0');
edtProxyUserName.Text:=appINI.ReadString('PROXY','USERNAME','');
edtProxyPass.Text:= appINI.ReadString('PROXY','PASSWORD','');
finally
appINI.Free;
end;
end;
看到我的更新(在我的答案)。這應該讓它起作用。 – lkessler
自15年前的第一個Windows NT版本以來,具有隻讀安裝目錄的用戶帳戶已成爲可能,並且在企業環境中很常見。你以前從未在這樣的賬戶上測試過。除非您使用僅支持Vista的API函數(MSDN文檔指出每個函數的最低必需操作系統版本),否則答案中的技術肯定與Windows 2000及更高版本兼容。 – mghie