myReg:=TRegistry.Create;
myReg.CreateKey('\sunandan123\');
//myReg.WriteString('Tile','1');
myReg.WriteString ('TileWallpaper','1') ;
此代碼給出了一個異常,我沒有爲「TileWallpaper」設置值。如何糾正它?如何在Delphi中創建一個值到創建的註冊表中
謝謝
myReg:=TRegistry.Create;
myReg.CreateKey('\sunandan123\');
//myReg.WriteString('Tile','1');
myReg.WriteString ('TileWallpaper','1') ;
此代碼給出了一個異常,我沒有爲「TileWallpaper」設置值。如何糾正它?如何在Delphi中創建一個值到創建的註冊表中
謝謝
調用CreateKey
不會打開寫入失敗的原因。
的最簡單的解決方案是具有一至OpenKey
傳遞True
爲CanCreate
參數來代替呼叫CreateKey
。這將創建密鑰(如果它尚不存在),然後打開它供您在隨後的方法調用中使用。
myReg.OpenKey('\sunandan123\', True);
myReg.WriteString ('TileWallpaper', '1');
而對於完整性你應該包括錯誤處理的緣故,嘗試/終於周圍的myReg
等壽命我也建議你明確地設定RootKey
,因爲此刻的你是依靠它的默認值HKCU
。
我總是這樣做。
procedure TForm1.Button1Click(Sender: TObject);
var R: TRegistry;
begin
R := TRegistry.Create;
try
if not R.OpenKey('Software\CompanyName\ProductName\SubKey', True) then
RaiseLastOSError;
R.WriteString('ValueName', '1');
R.WriteString('Other Value Name', 'Some other value');
finally R.Free;
end;
end;
+1解釋爲什麼OP的方式不起作用。 –