Mac Preferences Read and Write
From Free Pascal wiki
Jump to navigationJump to searchThis article applies to macOS only.
See also: Multiplatform Programming Guide
│
English (en) │
For those who want to read and write preferences for a macOS application, this can be done using the following methods:
CODE FOR READING PREFERENCES |
---|
uses MacOSAll, CFPreferences;
var
IsValid: Boolean; // On return indicates if key exists and has valid data
Pref: Integer;
procedure TForm1.FormCreate(Sender: TObject);
begin
try
Pref := CFPreferencesGetAppIntegerValue(CFStr('Check1'),kCFPreferencesCurrentApplication,IsValid);
if (Pref = 1) then
CheckBox1.Checked := true
else
CheckBox1.Checked := false;
Pref := CFPreferencesGetAppIntegerValue(CFStr('Check2'),kCFPreferencesCurrentApplication,IsValid);
if (Pref = 1) then
CheckBox2.Checked := true
else
CheckBox2.Checked := false;
Pref := CFPreferencesGetAppIntegerValue(CFStr('Check3'),kCFPreferencesCurrentApplication,IsValid);
if (Pref = 1) then
CheckBox3.Checked := true
else
CheckBox3.Checked := false;
Pref := CFPreferencesGetAppIntegerValue(CFStr('Check4'),kCFPreferencesCurrentApplication,IsValid);
if (Pref = 1) then
CheckBox4.Checked := true
else
CheckBox4.Checked := false;
except
on E : Exception do
ShowMessage(E.ClassName+' error raised, with message : '+E.Message);
end;
end;
CODE FOR WRITING PREFERENCES |
---|
uses MacOSAll, CFPreferences;
var
ItemName: CFStringRef;
ItemVal: CFPropertyListRef;
procedure TForm1.FormClose(Sender: TObject);
begin
try
if (CheckBox1.Checked) then
begin
ItemName := CFStr('Check1');
ItemVal := CFStringCreateWithPascalString(kCFAllocatorDefault,'1',kCFStringEncodingUTF8);
CFPreferencesSetAppValue(ItemName,ItemVal,kCFPreferencesCurrentApplication);
end
else
begin
ItemName := CFStr('Check1');
ItemVal := CFStringCreateWithPascalString(kCFAllocatorDefault,'0',kCFStringEncodingUTF8);
CFPreferencesSetAppValue(ItemName,ItemVal,kCFPreferencesCurrentApplication);
end;
if (CheckBox2.Checked) then
begin
ItemName := CFStr('Check2');
ItemVal := CFStringCreateWithPascalString(kCFAllocatorDefault,'1',kCFStringEncodingUTF8);
CFPreferencesSetAppValue(ItemName,ItemVal,kCFPreferencesCurrentApplication);
end
else
begin
ItemName := CFStr('Check2');
ItemVal := CFStringCreateWithPascalString(kCFAllocatorDefault,'0',kCFStringEncodingUTF8);
CFPreferencesSetAppValue(ItemName,ItemVal,kCFPreferencesCurrentApplication);
end;
if (CheckBox3.Checked) then
begin
ItemName := CFStr('Check3');
ItemVal := CFStringCreateWithPascalString(kCFAllocatorDefault,'1',kCFStringEncodingUTF8);
CFPreferencesSetAppValue(ItemName,ItemVal,kCFPreferencesCurrentApplication);
end
else
begin
ItemName := CFStr('Check3');
ItemVal := CFStringCreateWithPascalString(kCFAllocatorDefault,'0',kCFStringEncodingUTF8);
CFPreferencesSetAppValue(ItemName,ItemVal,kCFPreferencesCurrentApplication);
end;
if (CheckBox4.Checked) then
begin
ItemName := CFStr('Check4');
ItemVal := CFStringCreateWithPascalString(kCFAllocatorDefault,'1',kCFStringEncodingUTF8);
CFPreferencesSetAppValue(ItemName,ItemVal,kCFPreferencesCurrentApplication);
end
else
begin
ItemName := CFStr('Check4');
ItemVal := CFStringCreateWithPascalString(kCFAllocatorDefault,'0',kCFStringEncodingUTF8);
CFPreferencesSetAppValue(ItemName,ItemVal,kCFPreferencesCurrentApplication);
end;
CFPreferencesAppSynchronize(kCFPreferencesCurrentApplication);
except
on E : Exception do
ShowMessage(E.ClassName+' error raised, with message : '+E.Message);
end;