Delphi - объектно-ориентированный язык программирования, разработанный компанией Borland в 1995 году. Он основан на языке программирования Pascal, но имеет более расширенные возможности и добавлены новые функции.
Delphi является интегрированной средой разработки (IDE), которая позволяет разрабатывать программное обеспечение для различных платформ, включая Windows, macOS, Android и iOS. Delphi достигает многоплатформенности с помощью...
Мое решение: (для сохранения всей иннформации об отдельном шрифте)
functionFontToStr(font: TFont): string
; procedure
yes(var
str: string
); begin
str := str + 'y'; end
; procedure
no(var
str: string
); begin
str := str + 'n'; end
; begin
{кодируем все атрибуты TFont в строку} Result := ''; Result := Result + IntToStr(font.Color) + '|'; Result := Result + IntToStr(font.Height) + '|'; Result := Result + font.Name + '|'; Result := Result + IntToStr(Ord(font.Pitch)) + '|'; Result := Result + IntToStr(font.PixelsPerInch) + '|'; Result := Result + IntToStr(font.size) + '|'; if
fsBold in
font.style then
yes(Result) else
no(Result); if
fsItalic in
font.style then
yes(Result) else
no(Result); if
fsUnderline in
font.style then
yes(Result) else
no(Result); if
fsStrikeout in
font.style then
yes(Result) else
no(Result); end
; procedure
StrToFont(str: string
; font: TFont); begin
if
str = '' then
Exit; font.Color := StrToInt(tok('|', str)); font.Height := StrToInt(tok('|', str)); font.Name := tok('|', str); font.Pitch := TFontPitch(StrToInt(tok('|', str))); font.PixelsPerInch := StrToInt(tok('|', str)); font.Size := StrToInt(tok('|', str)); font.Style := []; if
str[0] = 'y' then
font.Style := font.Style + [fsBold]; if
str[1] = 'y' then
font.Style := font.Style + [fsItalic]; if
str[2] = 'y' then
font.Style := font.Style + [fsUnderline]; if
str[3] = 'y' then
font.Style := font.Style + [fsStrikeout]; end
; function
tok(sep: string
; var
s: string
): string
; function
isoneof(c, s: string
): Boolean; var
iTmp: integer; begin
Result := False
; for
iTmp := 1 to
Length(s) do
begin
if
c = Copy(s, iTmp, 1) then
begin
Result := True
; Exit; end
; end
; end
; var
c, t: string
; begin
if
s = '' then
begin
Result := s; Exit; end
; c := Copy(s, 1, 1); while
isoneof(c, sep) do
begin
s := Copy(s, 2, Length(s) - 1); c := Copy(s, 1, 1); end
; t := ''; while
(not
isoneof(c, sep)) and
(s <> '') do
begin
t := t + c; s := Copy(s, 2, length(s) - 1); c := Copy(s, 1, 1); end
; Result := t; end
;
Если вы серьезно нуждаетесь в подобной технологии для сохранения свойств объектов, то я бы посоветовал вам создать наследника класса TIniFile, выполняющего подобные операции.