kami
-
Постов
643 -
Зарегистрирован
-
Посещение
-
Победитель дней
41
Активность репутации
-
kami получил реакцию от Равиль Зарипов (ZuBy) в Version Control
Использую GIT и SVN
Но не встроенные средства, а черепашку (Tortoise), консоль для меня слишком круто
-
kami получил реакцию от Евгений Корепов в Что я делаю не так при работе с DLL библиотеками из FireMonkey?
Вы не поверите, но передавать экземпляры классов между различными независимыми модулями (будь то exe и dll или две разных длл) нельзя даже если версии IDE абсолютно идентичны. Потому что TBitmap в одном модуле - это не то же самое, что TBitmap в другом модуле. У каждого модуля СВОЙ менеджер памяти, своя таблица виртуальных методов (VMT), свои структуры описания классов и т.д. и т.п. Модуль будет пытаться работать с экземпляром класса, как со своим, обращаясь к своим методам вместо методов, реализация которых находится в другом модуле. И память при работе с методами и свойствами объекта он будет выделять и пытаться освободить СВОЮ, а надо было бы - память, выделенную менеджером памяти другого модуля. Вот вам и первопричина для глюков.
Из dll в exe и наоборот в случае с битмапом вы можете передать максимум hbitmap, поскольку это хендл на ресурс ОС. А классы, их экземпляры, строки и другие типы с управляемым временем жизни передавать нельзя, это табу.
Для изучения: http://www.gunsmoker.ru/2011/12/delphi.html#n5 сразу можно переходить к правилу 6
-
kami отреагировална krapotkin в фремы динамическое создание
я практически везде использую динамически создаваемые фреймы. вообще никаких проблем не встречал
главное - четко помнить, что данные должны храниться в модели данных, а интерфейс - работать с этой моделью
при этом некоторые вещи в рамках программы являются глобальными синглтонами, например, объект, содержащий настройки программы и данные текущего залогиненного юзера. ну и часто - главная форма программы.
код при создании фреймов не в точности, но похож на приведенный в старте темы
-
kami получил реакцию от Genesis в DOC to PNG
Скорее с помощью RTL и WinAPI.
Собственно, ищем:
1. как работать с LibreOffice (подключение/отключение)
2. Как открыть существующий документ
3. Как сохранить его в нужном формате.
Соединяем эти кусочки воедино и имеем нужный результат на выходе.
-
kami отреагировална krapotkin в Копирование Grid на другую форму
по-хорошему, это вообще неправильно от слова совсем
нужно иметь модель данных и процедуру отрисовки этой модели в грид
это не так уж и сложно, а проблем с выводом чего угодно куда попало нет и не может быть
-
kami получил реакцию от Равиль Зарипов (ZuBy) в Что я делаю не так при работе с DLL библиотеками из FireMonkey?
вы случайно не объекты и/или дельфовые типы (а-ля string) передавали между exe и dll?
-
kami получил реакцию от Pax Beach в Создание и запуск нового потока (POSIX)
http://forum.vingrad.ru/forum/topic-60076.html
-
kami получил реакцию от RapsodRF в Создание и запуск нового потока (POSIX)
Под виндой все же рекомендуется использовать не виндовый CreateThread, а враппер BeginThread, если уж наследника TThread по каким-то причинам вы избегаете
-
kami получил реакцию от Евгений Корепов в Очищение памяти
Но если про него кто-то помнит (держит ссылку), то зомби будет продолжать влачить существование.
-
kami получил реакцию от Rusland в метод получить время в минутах больше 60
Uses System.DateUtils. MinutesBetween(0, TimeEdit.Time)
-
kami получил реакцию от Kitty в метод получить время в минутах больше 60
Uses System.DateUtils. MinutesBetween(0, TimeEdit.Time)
-
kami отреагировална Brovin Yaroslav в Создание и запуск нового потока (POSIX)
А обычный класс TThread не подходит?
-
kami получил реакцию от zairkz в Очищение памяти
Но если про него кто-то помнит (держит ссылку), то зомби будет продолжать влачить существование.
-
kami отреагировална Равиль Зарипов (ZuBy) в Очищение памяти
то что создается, должно быть убито. вот и всё
-
kami отреагировална krapotkin в Хранение данных
вполне себе норм способ
только SharedDocuments возможно не лучшее место хранения, а txt - не лучший формат
но официально для этого есть SharedPreferences. Я лично взял тут и пока пользуюсь
-
kami отреагировална krapotkin в Скопировать Дженерик
я всегда делаю специальный метод AssignFrom
можно сделать его через json-сериализацию
-
kami получил реакцию от Шамсуддин в Многодокументое приложение
Кто вам такое сказал?
Всё зависит от дизайна приложения. Фрейм делается, если какой-либо участок интерфейса:
а) используется в нескольких местах, дабы не дублировать код и dfm
б) если он занимает не всю форму, а ее часть и при этом обладает законченной или разветвленной логикой.
-
kami получил реакцию от Шамсуддин в Многодокументое приложение
Фреймы с разделением логики работы между ними спасут отца русской демократии.
-
kami получил реакцию от Brovin Yaroslav в Многодокументое приложение
Фреймы с разделением логики работы между ними спасут отца русской демократии.
-
kami получил реакцию от zairkz в Динамическое создание/уничтожение
Нужно использовать myObject.Release, а не Free.
Только обратите внимание, что Release - это отложенное уничтожение, т.е. моментально компонент исчезает с формы, а вот уничтожится - после, когда-нибудь, когда до него дойдет очередь.
Помимо этого, если ссылка на объект есть где-то в поле класса, то нужно заnil-ить ее, дабы уменьшить счетчик ссылок.
-
kami получил реакцию от Kitty в Динамическое создание/уничтожение
Нужно использовать myObject.Release, а не Free.
Только обратите внимание, что Release - это отложенное уничтожение, т.е. моментально компонент исчезает с формы, а вот уничтожится - после, когда-нибудь, когда до него дойдет очередь.
Помимо этого, если ссылка на объект есть где-то в поле класса, то нужно заnil-ить ее, дабы уменьшить счетчик ссылок.
-
kami получил реакцию от sviat9440 в Автоматическая расстановка End-ов
По моему опыту: автодополнение кода перестает работать при
Длинном методе (вложенные процедуры/функции не в счет) Если между методами (не внутри, а именно между) есть комментарии Если большая вложенность всяких циклов, if и т.п. Если встречаются конструкции, которые форматтер (Ctrl + D) обрабатывает неправильно (некорректно просчитывает отступы). Помогает явная вставка Begin/end или, как было пару раз с array of record x:type1; y:type2; end - вынести объявление типа отдельно. Иногда (но очень редко) с директивами условной компиляции. Когда Луна входит в созвездие Песца. Если случился пункт 6 - помогает закрыть вкладку модуля и открыть ее заново. В особо сложных случаях - перезапустить IDE.
-
kami получил реакцию от Kitty в Автоматическая расстановка End-ов
По моему опыту: автодополнение кода перестает работать при
Длинном методе (вложенные процедуры/функции не в счет) Если между методами (не внутри, а именно между) есть комментарии Если большая вложенность всяких циклов, if и т.п. Если встречаются конструкции, которые форматтер (Ctrl + D) обрабатывает неправильно (некорректно просчитывает отступы). Помогает явная вставка Begin/end или, как было пару раз с array of record x:type1; y:type2; end - вынести объявление типа отдельно. Иногда (но очень редко) с директивами условной компиляции. Когда Луна входит в созвездие Песца. Если случился пункт 6 - помогает закрыть вкладку модуля и открыть ее заново. В особо сложных случаях - перезапустить IDE.
-
kami получил реакцию от zairkz в [android] Как правильно удалять контролы в RunTime(2)?
Сперва - Release, потом = nil
http://fire-monkey.ru/topic/2817-динамическое-созданиеуничтожение/?do=findComment&comment=16461
Free на мобильных платформах не делает ничего.
В вашем коде компонент, естественно, будет продолжать находиться - ведь ссылку на него как минимум хранит его Owner, переданный в конструкторе.
-
kami получил реакцию от estra в [android] Как правильно удалять контролы в RunTime(2)?
Сперва - Release, потом = nil
http://fire-monkey.ru/topic/2817-динамическое-созданиеуничтожение/?do=findComment&comment=16461
Free на мобильных платформах не делает ничего.
В вашем коде компонент, естественно, будет продолжать находиться - ведь ссылку на него как минимум хранит его Owner, переданный в конструкторе.