169 похожих чатов

Комрады, грызу паттерны, в частности, синглтон, на основе которого сделал

класс-сохраняльщик настроек. Все бы ничего, но смущает необходимость сохранять передаваемые свойства форм в промежуточных пропертях. Есть возможность реализовать это как-то более изящно без ненужных зависимостей (в виде добавления в uses implementation) заинтересованных форм?
public
property SaveFolder: String read FSaveFolder;
property SettingsFile: TCustomIniFile read FSettingsFile;
property SenderObject: TSenderObject read FSenderObject write FSenderObject;
property RadioItemsIndex: Integer read FRadioItemsIndex write FRadioItemsIndex;
property ChkBx1_checked: Boolean read FChkBx1_checked write FChkBx1_checked;

procedure Save(Sender: TObject);
procedure Load(Sender: TObject);
end;

procedure TSettings.Load(Sender: TObject);
begin
if not TObject(Sender).InheritsFrom(TCustomForm) then Exit;

if not Assigned(SettingsFile) then Exit;

with TCustomForm(Sender) do
begin
Top := SettingsFile.ReadInteger(Name, 'Top', Top );
<skiped>
FChkBx1_checked:= SettingsFile.ReadBool(Name, 'ChkBx1_checked', ChkBx1_checked);//Form2
FRadioItemsIndex:= SettingsFile.ReadInteger(Name, 'RadioItemsIndex', RadioItemsIndex);//Form3

case SettingsFile.ReadBool(Name, 'InitMax', WindowState = wsMaximized) of
true : WindowState := wsMaximized;
false: WindowState := wsNormal;
end;
end;
end;

46 ответов

68 просмотров

RTTI/аттрибуты, или интерфейс типа ISetting рассматривал?

Ed-Doc Автор вопроса
Alexey Gavrilov
RTTI/аттрибуты, или интерфейс типа ISetting рассма...

через rrti это как будет выглядеть? типа if TObject(Sender).Equal(Form1) then ... ?

Ты хочешь сделать аналог лазарусовского TIniPropStorage? По хорошему, да, через rtti делать надо

Ed-Doc Автор вопроса
Renat Suleymanov
Ты хочешь сделать аналог лазарусовского TIniPropSt...

лесенки писать не хочется. хотелось по-быстрому :)

Ed Doc
лесенки писать не хочется. хотелось по-быстрому :)

Я, кстати, для быстрого сохранения класс конфига использую готовую функцию JSON стриминг в текст. Если свойства формы, то готовый TIniPropStorage или TJSONPropStorage

Ed Doc
через rrti это как будет выглядеть? типа if TObjec...

Не не не, любой потомок TPersistent для RTTI или вообще любой для интерфейсов.

Ed-Doc Автор вопроса
Renat Suleymanov
Я, кстати, для быстрого сохранения класс конфига и...

в качестве альтернативы можно создавать экземпляр TMemIniFile со своими Lоad/Save на каждой форме, но чо-та как-то совсем не комильфо. Да и утомительно. Понятно, когда компонентом - бросил на форму, заполни и забыл

Ed-Doc Автор вопроса
Alexey Gavrilov
Не не не, любой потомок TPersistent для RTTI или в...

Леш, можешь намекнуть, как это выглядить вживую?

Ed Doc
в качестве альтернативы можно создавать экземпляр ...

СЛушай. А почему не TIniPropStorage тогда? Что за задача?

Ed Doc
Дельфи 😓

Ай, забыл, сорри

Ed Doc
через rrti это как будет выглядеть? типа if TObjec...

Новый RTTI/аттрибуты позволяют фильтровать список свойств и переименовывать ключи, под какими сохраняешь. Со старым RTTI будет похоже на dfm, все подряд.

Ed-Doc Автор вопроса
Alexey Gavrilov
Новый RTTI/аттрибуты позволяют фильтровать список ...

имя, сестра, имя © Показывай код, я - тупой :))))

Ed Doc
Дельфи 😓

Можно подсмотреть в rx, vg, jcl. По старому. Буду у компа, пришлю.

Alexey Gavrilov
Можно подсмотреть в rx, vg, jcl. По старому. Буду ...

https://stackoverflow.com/questions/15702778/how-can-i-set-get-property-value-through-rtti-for-complex-things-like-tstringgri https://delphi-kb.blogspot.com/2008/12/application-settings-article-1.html?m=1 http://digital-flame.ru/2018/01/26/rtti-atributes/

Alexey Gavrilov
https://stackoverflow.com/questions/15702778/how-c...

Это ещё не всё, это тоже с телефона.

Док, не поняла какие свойства форм хочешь сохранять. Можешь подробней?

Ed-Doc Автор вопроса
Катерина Свиридова
Док, не поняла какие свойства форм хочешь сохранят...

Всякие. Состояние чекбоксов, радиокнопок, списков и т.д и т.п.

Ed Doc
Всякие. Состояние чекбоксов, радиокнопок, списков ...

Повторю. Джедаевские компоненты не подходят?

Ed-Doc Автор вопроса
Руслан
Повторю. Джедаевские компоненты не подходят?

Ты представляешь, сколько г@вна надо поставить вместе с пакетами джедаев из-за одного компонента? Имхо, джедаи хороши для поиска идей

Ed Doc
Ты представляешь, сколько г@вна надо поставить вме...

Я думаю будет быстрее чем свое универсальное клепать. А нажать две кнопочки в гетит это не сложно :)

Руслан
Я думаю будет быстрее чем свое универсальное клепа...

Или посмотреть как там сделано и какие модули нужны

А
Или посмотреть как там сделано и какие модули нужн...

В джедах забей... Там столько зависимостей, что проще использовать что есть чем что-то достать...

А
Идею, алгоритм?

Таких компонентов вагон: роси, джедаи, ехлибы. Хочется тратить время на ниочем - вперёд :)

Руслан
Таких компонентов вагон: роси, джедаи, ехлибы. Хоч...

Он сейчас тратит время, чтобы написать алгоритм. Будет ещё один. Джедай. Домашний.

А
Он сейчас тратит время, чтобы написать алгоритм. Б...

А я Дока понимаю. Всякую ерунду тащить)

А
Зачем тащить?

Да. Зачем тащить!)

Ed-Doc Автор вопроса
А
Он сейчас тратит время, чтобы написать алгоритм. Б...

Ты пробовал ставить 100500 компонентов на новую среду только для того, чтобы у тебя легаси проект скопировался? Я из десятка сторонних оставил только эхлибы, фибы и ФР. Остальное выпилил безжалостно. В том числе и джедаев

Ed Doc
Ты пробовал ставить 100500 компонентов на новую ср...

Это ты старые проекты ещё со времён д7 тащишь?

А
Зачем ставить?

Аа, в этом смысле) Спасибо, Кэп)

Руслан
Это ты старые проекты ещё со времён д7 тащишь?

Можно я выматерюсь про женщин низкой ответственности?)

Ed Doc
Ты пробовал ставить 100500 компонентов на новую ср...

жедаи к слову отлично ставятся на все среды. так что вот их как раз бояться тянуть в проекты стоит меньше всего

Ed-Doc Автор вопроса
А
Скачать исходники нельзя?

Обычно понимают, что это кэп очевидность. Не хотела обидеть)

Ed Doc
Дим, и ты туда же 🙈

а чо нет, на жедаях наши проекты были с первых версий )

Катерина Свиридова
Обычно понимают, что это кэп очевидность. Не хотел...

Он не хочет тянуть, ставить Руслан предлагает. А подсмотреть и найти вопросы и какой ещё путь Джедая ждёт.. Ну пусть. Свое то лучше..

А
Он не хочет тянуть, ставить Руслан предлагает. А п...

как раз вот компоненты сохранения в жедаях всегда отлично работали. понятно, что своё можно, но зачем если и так всего хватает выше крыши

Ed Doc
Дим, и ты туда же 🙈

Так пока непонятно из за чего не хочешь... Своё напишешь оптимальнее? Или за килобайты борьба?

А
Он не хочет тянуть, ставить Руслан предлагает. А п...

Я перетаскиваю с 7 на 11 и знаю, как легко напороться на непереносимость. Уже плешь всем этим проела))

Ed-Doc Автор вопроса
LONG
Так пока непонятно из за чего не хочешь... Своё на...

Из-за двух функций ставить весь пакет - явный оверхед. Ты же не покупаешь машину, чтобы ездить в булочную за хлебом?

Похожие вопросы

Обсуждают сегодня

Anyone here suffers from unexplained aural migraines, who would be up for talking for a bit? Doesn't *have* to be aural, but I am not asking about headaches, I mean actual mi...
Martin Rys
55
подскажите пожалуйста, как мне освободить результат записанный в переменную result? в чем проблема подскажите если МОЖЕТЕ?
Михаил Helper
28
есть тут кто-то , кто только начал изучать си? если проходите курс на степике или как-то сами изучаете, пишите, может, скооперируемся?..
Eule
25
Слушайте, ещё такая интересная задачка. Сделан аудит действий пользователей через триггеры в базе, соответственно каждый пользователь имеет свой логин и пароль в базе. Это пре...
Сергей Бычков
12
Скажите, тут нет проблемы? IMyInterface1 = interface function GetInterface2: IInterface2; ... function TMyInterface.GetInterface2: IInterface2; begin Result := TI...
Ruslan aka DUDE
18
вопрос по москвину - не понимаю вот такого вопроса похоже Сколько разных всегда завершающихся функций с типом a -> a -> b -> a -> a можно реализовать? Две функции одинаково...
Fedor
11
Кстати, раз про скачивание файлов разговор зашел) Сделал бота для себя (транскрибирующего и суммаризирующего встречи) но не ожидал что за 2 месяца 10к пользователей набежит😅...
Andrey Obolenskiy
8
я не магистр хаскеля, но разве не может лейзи тип конвертнуться в не-лейзи запросив вычисление содержимого прям при инициализации?
deadgnom32 λ madao
100
Утра доброго. Просветите пожалуйста. Хочу сделать rest сервер на делфи. Посмотрел 3 фреймворка: dmvc, Mars, mormot. Ни в одном из них не упоминается ассинхронная обработка вхо...
Сергей Бычков
10
возможно для форматирования TimeStampZ нужен другой механизм, не?
Роман Лях (rgreat)
13
Карта сайта