Недавно добавленные исходники

•  DeLiKaTeS Tetris (Тетрис)  4 649

•  TDictionary Custom Sort  6 652

•  Fast Watermark Sources  6 432

•  3D Designer  9 371

•  Sik Screen Capture  6 759

•  Patch Maker  7 156

•  Айболит (remote control)  7 163

•  ListBox Drag & Drop  6 017

•  Доска для игры Реверси  97 614

•  Графические эффекты  7 344

•  Рисование по маске  6 632

•  Перетаскивание изображений  5 501

•  Canvas Drawing  5 883

•  Рисование Луны  5 608

•  Поворот изображения  5 111

•  Рисование стержней  3 686

•  Paint on Shape  2 914

•  Генератор кроссвордов  3 811

•  Головоломка Paletto  3 062

•  Теорема Монжа об окружностях  3 868

•  Пазл Numbrix  2 547

•  Заборы и коммивояжеры  3 267

•  Игра HIP  2 238

•  Игра Go (Го)  2 171

•  Симулятор лифта  2 550

•  Программа укладки плитки  2 186

•  Генератор лабиринта  2 686

•  Проверка числового ввода  2 331

•  HEX View  2 667

•  Физический маятник  2 303

 
скрыть

  Форум  

Delphi FAQ - Часто задаваемые вопросы

| Базы данных | Графика и Игры | Интернет и Сети | Компоненты и Классы | Мультимедиа |
| ОС и Железо | Программа и Интерфейс | Рабочий стол | Синтаксис | Технологии | Файловая система |



Delphi Sources

Сохранение параметров шрифта в 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, выполняющего подобные операции.





Похожие по теме исходники

Mini Audio Player

Snake & MiniSaper WinApi

Mini WebBrowser (браузер)

FTP MiniChat

 

IniEx2

Mini HTML Editor

INI XML Files

Work with INI

 

Mini Archiver (архиватор)