Консультация № 187672
12.12.2013, 16:12
129.11 руб.
0 9 1
Здравствуйте! У меня возникли сложности с таким вопросом: Требуется сохранить в ini файле настройки шрифта.
Я использую для чтения и хранения такую конструкцию
Код:

Чтение
TabSheet1.Font.Color:=IniFile.ReadInteger('-----TabSheet1_Font_Color-----','8',TabSheet1.Font.Color);
TabSheet1.Font.Size:=IniFile.ReadInteger('-----TabSheet1_Font_Size-----','9',TabSheet1.Font.Size);
TabSheet1.Font.Style:=IniFile.ReadInteger('-----TabSheet1_Font_Style-----','10',TabSheet1.Font.Style); - ругается
TabSheet1.Font.Name:=IniFile.ReadString('-----TabSheet1_Font_Name-----','11',TabSheet1.Font.Name);

Запись
IniFile.WriteInteger('-----TabSheet1_Font_Color-----','8',TabSheet1.Font.Color);
IniFile.WriteInteger('-----TabSheet1_Font_Size-----','9',TabSheet1.Font.Size);
IniFile.WriteInteger('-----TabSheet1_Font_Style-----','10',Byte(TabSheet1.Font.Style));
IniFile.WriteString('-----TabSheet1_Font_Name-----','11',TabSheet1.Font.Name);


В ини файле получаю
Код:
 
[-----TabSheet1_Font_Color-----]
8=255
[-----TabSheet1_Font_Size-----]
9=16
[-----TabSheet1_Font_Name-----]
11=Times New Roman
[-----TabSheet1_Font_Style-----]
10=0


Не получается прочитать настройки TabSheet1.Font.Style.

Пример записи свойств стиля брал из этого примера.
Код:

procedure TForm1.Button1Click(Sender: TObject);
var
IniFile : TIniFile;
begin
IniFile := TIniFile.Create('myIni.ini');
with Edit1.Font do with IniFile do begin
Name := ReadString ('Font','Name','MS Mans Serif');
Charset := ReadInteger('Font','Charset',RUSSIAN_CHARSET);
Color := ReadInteger('Font','Color', clWindowText);
Height := ReadInteger('Font','Height',-11);
Size := ReadInteger('Font','Size',8);
Style := TFontStyles(Byte(ReadInteger('Font','Style',0)));
end;
IniFile.Free;
end;

procedure TForm1.Button2Click(Sender: TObject);
var
IniFile : TIniFile;
begin
IniFile := TIniFile.Create('myIni.ini');
with Edit1.Font do with IniFile do begin;
WriteString ('Font','Name', Name);
WriteInteger('Font','Charset', Charset);
WriteInteger('Font','Color', Color);
WriteInteger('Font','Height', Height);
WriteInteger('Font','Size', Size);
WriteInteger('Font','Style',Byte(Style));
end;
IniFile.Free;
end;

Подскажите в чем у меня проблема, как правильно прочитать настройки свойства стиля?

Обсуждение

Неизвестный
12.12.2013, 16:18
общий
12.12.2013, 16:21
Адресаты:
Здравствуйте. А как ругается, конкретно? При компиляции, или при выполнении? И какая ошибка?
Если при компиляции, то могу предположить несовпадение типов - попробуйте так:
TabSheet1.Font.Style:=IniFile.ReadInteger('-----TabSheet1_Font_Style-----','10',byte(TabSheet1.Font.Style));
Неизвестный
12.12.2013, 16:19
общий
И что же, собственно, мешает сделать как в примере?
давно
Посетитель
352040
133
12.12.2013, 16:48
общий
12.12.2013, 16:50
Ругается при компиляции - Unit1.pas(369): Incompatible types: 'TFontStyles' and 'Integer'
на строку - TabSheet1.Font.Style:=IniFile.ReadInteger('-----TabSheet1_Font_Style-----','10',byte(TabSheet1.Font.Style));
Об авторе:
Пользуюсь Delphi Enterprise Version7.
давно
Посетитель
352040
133
12.12.2013, 17:01
общий
Не могу к своему проекту подогнать. Записывать, записывает, а читать не получается. Ругается на стадии компиляции.
Об авторе:
Пользуюсь Delphi Enterprise Version7.
Неизвестный
12.12.2013, 17:06
общий
но у Вас же в примере черным по белому написано:

Код:
Style := TFontStyles(Byte(ReadInteger('Font','Style',0)))


а вы пишете без преобразования. Верните преобразование на место и все будет хорошо
давно
Посетитель
352040
133
12.12.2013, 17:20
общий
Я не могу понять как сделать преобразование. В этом и проблема.
Об авторе:
Пользуюсь Delphi Enterprise Version7.
Неизвестный
12.12.2013, 17:25
общий
Скопировать из примера, заменив ReadInteger(...) на то, что у Вас
давно
Посетитель
352040
133
12.12.2013, 17:36
общий
Можно код? Не понимаю.
Об авторе:
Пользуюсь Delphi Enterprise Version7.
Неизвестный
12.12.2013, 17:50
общий
это ответ
Исправьте то, что у Вас выделено, на следующее:

Код:
TabSheet1.Font.Style:= TFontStyles(Byte(IniFile.ReadInteger('-----TabSheet1_Font_Style-----','10',Byte(TabSheet1.Font.Style)))); 
5
Благодарю! То что нужно. Все прекрасно работает.
Форма ответа