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

Комрады, хотел уточнить. Проперть в OnDestroy юнита-хозяина по-прежнему доступна? И

еще уточнение: finalization юнита наступает раньше или позже OnDestroy?

48 ответов

62 просмотра

И такая есть? Весело у вас там в лазаре... А зачем она нужна? Была бы это multi-event, подписка, я бы понял. А так...

Ed-Doc Автор вопроса
Arioch The
И такая есть? Весело у вас там в лазаре... А заче...

При чём здесь Лазарь? Я пока на дельфях сижу 😊 Не так что насчёт моего вопроса?

До Inherited можно делать что желаешь, если вопрос был про класс

Ed-Doc Автор вопроса
Arioch The
Проперти юнита не так

А финализейшн? Читал когда-то, но подзабылось...

Ed Doc
А финализейшн? Читал когда-то, но подзабылось...

Ещё раз, в Дельфи НЕТ пропертей у юнитов и твой вопрос просто не имеет смысла

Деструктор виртуален

finalization юнита происходит после уничтожения Application

Hemul GM
finalization юнита происходит после уничтожения Ap...

Ого, это мощный хрустальный шар! Точнее, после "end." :)

Arioch The
Ого, это мощный хрустальный шар! Точнее, после "e...

У девушки взял попользоваться, она ТЗ пишет со слов клиентов

как ты сделаешь так и будет наступать. это напрямую не связанные действия

Ed-Doc Автор вопроса
zamtmn
как ты сделаешь так и будет наступать. это напряму...

у меня в голове немного каша: по букварю, синглтон - объект, который создается в единственном экземпляре (у меня при показе главного окна приложения), и остальные окна (у меня модальные) юзают именно этот экземпляр, пока не умрет главное окно. Вот этот экземпляр автоматически пишет файл с настройками в одном месте (которое было указано при создании этого экземпляра). И проводить какие-либо манипуляции с физическим файлом на диске я не могу, пока экземпляр объекта существует. Поэтому я предположил, что логично дождаться уничтожения этого экземпляра, чтобы переместить файл с настройками в другое место (например). Потому я задался вопросом, где бы это сделать корректно, чтобы можно было проанализировать текущую и желаемую локализацию файла с настройками? Я где-то ошибаюсь?

Ed-Doc Автор вопроса
Alexander Sv
Там где этот синглтон уничтожается.

т.е. в ондейстрой между фри и инхерайтед?

Ed Doc
т.е. в ондейстрой между фри и инхерайтед?

Можно тут. А можно там где вызывается Settings.Free

Ed-Doc Автор вопроса

потому что экземпляр (пока жив) все равно будет писать файл туда же, откуда я его удалил, только с созданием нового файла (без прежде сохраненных настроек других форм).

Ed-Doc Автор вопроса
Alexander Sv
Можно тут. А можно там где вызывается Settings.Fre...

вот Петер мне так и ответил https://t.me/Delphi_Lazarus/323666

Ed-Doc Автор вопроса

Оккама против :)

Ed-Doc Автор вопроса

это лишние и ненужные телодвижения, плодить сущности без необходимости. Вся логика сводится к сохранению файла с настройками на время работы программы в одном месте. Даже если я перемещу файл в другое место, то экземпляр TMemIniFile будет писать текущий файл с настройками туда, где он был указан при создании оного экземпляра. Все остальное, имхо, это воскресное словоблудие :)

Ed-Doc Автор вопроса

🤐

Ed-Doc Автор вопроса

вот эту возможность я и преследую, спрашивая то, в чем я не уверен :)

Ed Doc
вот эту возможность я и преследую, спрашивая то, в...

нет, ты ждешь удаления объекта. Я говорю -= не жди, делай в живом объекте. Мы разные 😊

Ed-Doc Автор вопроса
Arioch The
нет, ты ждешь удаления объекта. Я говорю -= не жди...

каг? Пересоздать объект с новыми путями и перезалить туда содержимое текущего?

Ed Doc
каг? Пересоздать объект с новыми путями и перезали...

повторяю: "добавить в синглетон метод "перемести свой файл в другое место" - и пусть твой объект САМ поправит все свои внутренние пути

Ed-Doc Автор вопроса
Arioch The
повторяю: "добавить в синглетон метод "перемести с...

покажи примером, как? тело метода. Хотя бы схематично

Ed Doc
покажи примером, как? тело метода. Хотя бы схемати...

type TMyMemIniFile = class(TMemIniFile) public procedure Rename(const newFileName: TFileName); reintroduce; end; { TMyMemIniFile } procedure TMyMemIniFile.Rename(const newFileName: TFileName); var oldFile: TFileName; begin if AnsiSameText( ExpandFileName(Self.FileName), ExpandFileName(newFileName)) then Exit; // raise error??? oldFile := Self.FileName; try inherited Rename(newFileName, False); UpdateFile; except inherited Rename(oldFile, False); raise; end; SysUtils.DeleteFile(oldFile); end;

Ed Doc
покажи примером, как? тело метода. Хотя бы схемати...

1. закрыть текущий файл и освободить объект MemIni 2. переместить файл в новое место 3. открыть перемещённый файл, создав новый MemIni 4. ??? 5. Profit!

Green
1. закрыть текущий файл и освободить объект MemIni...

не нужно ничего уничтожать, эти объекты не держат файл открытым! но с tinifile другие сложности, там не полный путь к файлу по особым правилам считается. Там вообще путь к файлу может быть пустой строкой

Ed-Doc Автор вопроса
Green
1. закрыть текущий файл и освободить объект MemIni...

Вот как раз я и спрашивал, в каком месте удобнее сделать п.п. 1 и 2 Щас Димин метод попробую

Ed Doc
Вот как раз я и спрашивал, в каком месте удобнее с...

ни в каком! открой исходники TMEmIniFile наконец, они крохотные. Вот я например их сейчас открывал особенно tmeminifile.loadvalues и tmeminifile.updatefile

Ed-Doc Автор вопроса
Arioch The
ни в каком! открой исходники TMEmIniFile наконец,...

Когда-нибудь я с этого буду начинать писать программы. А пока проще спросить здесь 😊

Ed Doc
у меня в голове немного каша: по букварю, синглтон...

У тебя класс сохранялка держит файл чтоли в локе? Впрочем пофиг, даже если держит, при переназначении пути говоришь сохранялке чтобы он отцепился от текущего и свалил все свои данные по новому пути, после чего старый файл просто грохай. Если она такого не умеет, тогда грохаешь сохранялку, создаешь с новым путем, сохраняешь чо надо, грохаешь старый. Все делается в сеттере.

Ed-Doc Автор вопроса
Александр (Rouse_) Багель
У тебя класс сохранялка держит файл чтоли в локе? ...

Не держит, сохранялке поменять путь надо. Дима показал, как.

Ed-Doc Автор вопроса
Arioch The
type TMyMemIniFile = class(TMemIniFile) public...

Блин, у TMemIniFile есть штатный метод Remane, а я наследовался от TCustomIniFile, где это еще не реализовано. Кабы раньше знать 😊

Ed-Doc Автор вопроса
Arioch The
Use the source, Luke

Да ну тебя :) Эту фразу можно всегда писать первой в любом ответе Я тупо взял примеры из справки дельфей, там зачем-то указан предок TMemIniFile

Ed Doc
Да ну тебя :) Эту фразу можно всегда писать первой...

Понятно зачем. Чтобы избежать tight coupling. Консьюмеру должно быть все равно, кого ему дали. Даже если treginifile

Ed Doc
Да ну тебя :) Эту фразу можно всегда писать первой...

Сколько времени ты протрахал на переписывание справки и переписывание с чатегом? Я на запуск дельфы, открытие inifiles и поиск процедур с названиями типа renamе, и потом написанием плюс-минус готового кода потратил 10 минут. Вот и думай, точно ли ты съэкономил время... Так что да, UTSL

Ed-Doc Автор вопроса
Arioch The
Сколько времени ты протрахал на переписывание спра...

Дим, есть вещи, которые для меня новые. Естессно, я всех нюансов не знаю. Я боюсь представить, сколько у тебя времени ушло на то, чтобы получить тот багаж знаний, который есть сейчас :)))

Ed Doc
Дим, есть вещи, которые для меня новые. Естессно, ...

Видишь ли, у меня знаний было ноль. Точнее было знание, что ты хочешь использовать tmeminifile. Всё! Остальное - опыт ковыряния в чужом коде, и быстрого поиска. В гугле, в стековерфлоу, в исходниках, в стандартах, иногда в доках. Дано, док хочет перетащить tmeminifile на другое место, с сохранением данных, и вероятно удалением старого файла. В доки можно не смотреть, хотелка экзотическая, там такого 95% не будет. Что надо? 1. Понять, как именно твой выбранный класс сохраняет данные. 2. Понять, как он вообще знает, куда сохранять. 2.1. ...А для этого понять как он созраняет. Ведь чтобы сохранять он должен узнать куда. 3. Проверить, а вдруг велосипед уже готовый есть Открываем твой избранный класс и идём по списку. Ого, есть готовый rename... ...а нет, он не готовый, он теряет свои данные. А нет, не обязательно теряет. Ок, запомнили в блокнотик, надо вызывать rename(..., false) Так, как же он пишет?... ...ладно,тут я заранее знал про updatefile, потлму что когда-то попадал на не совместимость win98 и winnt. Но если бы не знал - я в просто прочитал код деструктора и нашёл бы его, +1 минута. Всё, больше не нужно ни-чё-го. Садимся и пишем процедурку, которая это все делает

Ed-Doc Автор вопроса

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

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

@Aiwan что такое база образца?
Alexey
27
Не многие знают, а кто знает, тот уже успел забыть, что в далёком 2004 году эта игра произвела настоящий фурор, настолько революционной была технология, применяемая для её соз...
ICCID
4
Короче я тут узнал полный пиздец Что кучу постов которые я создавал через posted Спустя время не могу редактировать и менять Мол телега возвращае ошибку Это реально так ...
inc.
13
коллеги, добрый вечер! А никто не знает как модальная форма может себя закрыть? Ну допустим модальная форма определила, что смысла ей работать нет и хочет вернуть modalResult...
Михаил
83
Хотя у меня сейчас есть более сложная задача, вот её думаю: как объяснить челу переходного возраста противоположного полу, обучающегося в польском колледже (а-ля наш техникум)...
Вячеслав Кузьменко
15
а вы в курсе, что Initialize() не работает? var arr123: array[0..123] of Byte; ... Initialize(arr123, SizeOf(arr123));
Iluha Companets
8
Добрый день Хочу начать обучение языку, не являюсь представителем it, буду благодарна за помощь, совсем пока не понимаю ничего) Подскажите, пожалуйста, где можно начать первы...
Sara Lala
30
что читать по делфи?вообще 0 в нем
fd dsds
9
верно что я могу удалить эти addq и subq т.к. со стеком никакого взаимодействия нет (исключая call)?
Michael
16
const dirname = new URL((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.src || new UR...
Kirill Shaplyko
4
Карта сайта