Сохранение параметров шрифта в INI-файле

Советы » Шрифты » Сохранение параметров шрифта в INI-файле

Мое решение: (для сохранения всей иннформации об отдельном шрифте)

function

FontToStr(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, выполняющего подобные операции.

Другое по теме:

Категории

Статьи

Советы

Copyright © 2022 - All Rights Reserved - www.delphirus.com