TTreeView - WARNING: TResourceCacheItem.IncreaseRefCount

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Re: TTreeView - WARNING: TResourceCacheItem.IncreaseRefCount

Сообщение jakyro » 28.09.2016 12:24:07

Ну и оказывается в логи пишет после закрытия приложения... А я смотрел что пока меняю размеры формы - в логе ничего не появляется. :roll:
Но проверял я тогда, когда ты про это и написал.
Аватара пользователя
jakyro
новенький
 
Сообщения: 38
Зарегистрирован: 22.08.2016 08:04:21

Re: TTreeView - WARNING: TResourceCacheItem.IncreaseRefCount

Сообщение Лекс Айрин » 28.09.2016 12:26:56

jakyro писал(а): так как возможно эти предупреждения отключены при сборке без -WG,



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

jakyro писал(а):Дело в том, что возможно при сборке с -WG вывод этих сообщений отрубается и то что нету ничего в логах - ничего не значт.


Эта опция всего лишь переключает тип собираемого приложения консоль/графическое приложение. На выхлоп она влияет слабо.

Добавлено спустя 52 секунды:
jakyro писал(а):Ну и оказывается в логи пишет после закрытия приложения...


а ДО этого они и не нужны.
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград

Re: TTreeView - WARNING: TResourceCacheItem.IncreaseRefCount

Сообщение zub » 28.09.2016 12:28:02

ок. с тебя разборки и багрепорт.
или снова это слишком дорого тебе?
zub
долгожитель
 
Сообщения: 2887
Зарегистрирован: 14.11.2005 23:51:26

Re: TTreeView - WARNING: TResourceCacheItem.IncreaseRefCount

Сообщение jakyro » 28.09.2016 12:33:14

Лекс Айрин писал(а):а ДО этого они и не нужны.

Нужны, чтобы отследить конкретный момент, когда было выдано предупреждение, при каких действиях.
Вот с консолью я это смог сделать. У меня было большое приложение, где куча всего, я думал что это у меня уже ссылки затерялись, утечка памяти в моём чудо валидатори или ещё где-то, а оказалось это дерево странное...

Запустил приложение, ждал пока вновь выведет это сообщение, но не выводило, начал добавлять пункты динамически, но ничего не происходило, не мог понять когда это происходит и однажды решил поменять размеры формы, или переместил её, и вот получил результат ДО закрытия программы, в конкретный момент времени, когда я совершал конкретные действия, которые смог тут описать...
Аватара пользователя
jakyro
новенький
 
Сообщения: 38
Зарегистрирован: 22.08.2016 08:04:21

Re: TTreeView - WARNING: TResourceCacheItem.IncreaseRefCount

Сообщение zub » 28.09.2016 12:33:43

>>Ну и оказывается в логи пишет после закрытия приложения..
Наврятли по закрытию, скорее всего сильно кэшируется. хотя я не проверял
zub
долгожитель
 
Сообщения: 2887
Зарегистрирован: 14.11.2005 23:51:26

Re: TTreeView - WARNING: TResourceCacheItem.IncreaseRefCount

Сообщение Лекс Айрин » 28.09.2016 12:36:59

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


тогда ShowMessage
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград

Re: TTreeView - WARNING: TResourceCacheItem.IncreaseRefCount

Сообщение jakyro » 28.09.2016 12:44:52

zub писал(а):ок. с тебя разборки и багрепорт.
или снова это слишком дорого тебе?

Та напишу там что-нибудь. Май инглишь из пёрфейкт ай кен врайте что-нибудь он зе репорт.
zub писал(а):Наврятли по закрытию, скорее всего сильно кэшируется. хотя я не проверял

Опять меня в смуту вводишь. Я перепроверил... С минуту передёргивал окно, ничего в логе не появлялось. Как закрыл, так сразу появилось.
Ну мож лог ждёт большего стака символов, строк для вывода, а не пишет конкретно при закрытии.

Лекс Айрин писал(а):тогда ShowMessage

Что ShowMessage?
Я ведь объяснил. Тут ты под конец работы программы получаешь пачку предупреждение, непонятно когда выданных в лог.
А в консольном режиме ты в реальном времени получаешь предупреждения.
Причём тут ShowMessage? Мне в ShowMessage выдаст предупреждение? То что ShowMessage помогает что-то отследить, проверить - это да, но мне нужно получить строку предупреждения и определить момент её получения, а не просто получить пачку логов...

Просто подрубить консоль без -WG, туда выводится всё и всё нормально. Как вон уже выяснилось это возможно баг, который работает в обоих сборках, а не конкретно -WG... И значит обе эти сборки ничем не отличаются и так можно собирать. А то тут писали что нельзя с консолью приложение делать -_-
Аватара пользователя
jakyro
новенький
 
Сообщения: 38
Зарегистрирован: 22.08.2016 08:04:21

Re: TTreeView - WARNING: TResourceCacheItem.IncreaseRefCount

Сообщение Лекс Айрин » 28.09.2016 12:56:47

jakyro писал(а):Что ShowMessage?


Хочется и рыбку съесть и шкурку сдать? ShowMessage позволит отследить ветку. (ну и есть шанс, что покажутся закешированные логи.).

jakyro писал(а): Как вон уже выяснилось это возможно баг, который работает в обоих сборках, а не конкретно -WG... И значит обе эти сборки ничем не отличаются и так можно собирать.


Тут не верное логическое умозаключение. Из посылки, что баг в обоих ветках еще не следует, что сборки полностью равноценны и в остальных позициях. Они предназначены для разных операционок. (или режимов работы) Возможно, что в консольном режиме того же Линукса оконный менеджер, отображающий это дерево, просто не загружается. И программа вылетит.
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград

Re: TTreeView - WARNING: TResourceCacheItem.IncreaseRefCount

Сообщение jakyro » 28.09.2016 13:17:30

Лекс Айрин писал(а):Хочется и рыбку съесть и шкурку сдать? ShowMessage позволит отследить ветку. (ну и есть шанс, что покажутся закешированные логи.).

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

Лекс Айрин писал(а):Тут не верное логическое умозаключение. Из посылки, что баг в обоих ветках еще не следует, что сборки полностью равноценны и в остальных позициях. Они предназначены для разных операционок. (или режимов работы) Возможно, что в консольном режиме того же Линукса оконный менеджер, отображающий это дерево, просто не загружается. И программа вылетит.

Кроссплатформенность меня волнует меньше всего. Возможно, когда-нибудь, может быть, зачем-то соберу и под другие ОС, но если будут проблемы в консольном режиме, как ты говоришь, то будет только сборка в графическом...
Но вряд ли. Скорей всего так же будет работать и под линукс, что в консольном режиме, что в графическом.

Вообще как-то не правильно разделять эти режимы. Ведь всё равно обе сборки - имеют графический интерфейс. Просто одна сборка в добавок ещё и консоль имеет, вывод сообщений в консоль...
Аватара пользователя
jakyro
новенький
 
Сообщения: 38
Зарегистрирован: 22.08.2016 08:04:21

Re: TTreeView - WARNING: TResourceCacheItem.IncreaseRefCount

Сообщение Лекс Айрин » 28.09.2016 13:34:11

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


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

jakyro писал(а):Вообще как-то не правильно разделять эти режимы. Ведь всё равно обе сборки - имеют графический интерфейс. Просто одна сборка в добавок ещё и консоль имеет, вывод сообщений в консоль...


Да нет, все правильно. Причина в структуре современных осей (на винду не смотрим, они просто не сумели добиться нормальной многозадачности ДОС режима, да и с практической точки зрения разницы никакой).
Нормальным режимом работы является как раз таки консольный, а в случае использования библиотеки визуальных компонент есть галочка (опция) наличия графического режима. То есть, ничто теоретически не мешает запустить дос-программу в винде, хотя практически мешает немного кривая реализация и/или проверка на эмуляцию терминала. И, вообще-то, консольная программа не должна иметь окна -- его наличие есть трюк возможный из-за особенностей реализации.
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград

Re: TTreeView - WARNING: TResourceCacheItem.IncreaseRefCount

Сообщение jakyro » 28.09.2016 14:00:37

Лекс Айрин писал(а):На самом деле, НЕ позволяет. Есть кеширование вывода, есть некий временной лаг на отображение результата.... да куча разных моментов.

Ну позволила ведь консоль мне отследить момент вывода предупреждения и мои действия во время вывода предупреждения...
И выводит без каких-то задержек, в отличии от записи лога в файл, который так и не записался, пока я не закрыл программу.
Аватара пользователя
jakyro
новенький
 
Сообщения: 38
Зарегистрирован: 22.08.2016 08:04:21

Re: TTreeView - WARNING: TResourceCacheItem.IncreaseRefCount

Сообщение Лекс Айрин » 28.09.2016 14:26:56

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


То, что сообщения выводятся быстрее еще не означает, что они обязательно выводятся вовремя. Да и того, что они соответствуют тем местам кода, которые нужны. Есть ведь куча кода, который слабо ассоциирован с визуальными компонентами -- например, таймер, прерывания, поддержка строк...
Вообще, лог должен анализироваться долго и вдумчиво, а не на лету. особенно в досовских программах, т. к. вывод в консоль может быть прикрыт псевдографическим интерфейсом.
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград

Re: TTreeView - WARNING: TResourceCacheItem.IncreaseRefCount

Сообщение zub » 28.09.2016 14:40:20

>>Опять меня в смуту вводишь. Я перепроверил...
перепроверять надо както так:
Код: Выделить всё
uses
  ..LazLogger..
...
procedure TForm1.Button1Click(Sender: TObject);
var
  i:integer;
begin
  for i:=0 to 999 do
  begin
  debugln('count: %d',[c]);
  inc(c);
  end;
end;
...

Действительно вывод лога буферезированый. Предлагаю почитать вику и выяснить - возможно есть какиенить ключики отключающие буферизацию?
zub
долгожитель
 
Сообщения: 2887
Зарегистрирован: 14.11.2005 23:51:26

Re: TTreeView - WARNING: TResourceCacheItem.IncreaseRefCount

Сообщение jakyro » 28.09.2016 15:40:00

Лекс Айрин писал(а):То, что сообщения выводятся быстрее еще не означает, что они обязательно выводятся вовремя. Да и того, что они соответствуют тем местам кода, которые нужны. Есть ведь куча кода, который слабо ассоциирован с визуальными компонентами -- например, таймер, прерывания, поддержка строк...
Вообще, лог должен анализироваться долго и вдумчиво, а не на лету. особенно в досовских программах, т. к. вывод в консоль может быть прикрыт псевдографическим интерфейсом.

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

Добавлено спустя 2 минуты 43 секунды:
zub писал(а):перепроверять надо както так:

Нет. Я перепроверял именно две строки, так как именно в той ситуации в файл ничего не записалось и я подумал, что лог пуст.
Я перепроверял, воссоздавал именно ту ситуацию, при которой лог был пуст и я подумал что никаких сообщений не выдало, закрыл папку и программу, после чего она записала лог, когда я уже за ним не наблюдал.
А ты опять ищешь тему пофлудить.
Аватара пользователя
jakyro
новенький
 
Сообщения: 38
Зарегистрирован: 22.08.2016 08:04:21

Re: TTreeView - WARNING: TResourceCacheItem.IncreaseRefCount

Сообщение zub » 28.09.2016 16:01:45

>>Нет. Я перепроверял именно две строки
Я имел ввиду проверку бферизация или запись по закрытию программы.

>>А ты опять ищешь тему пофлудить.
Все бы так флудили)) помоему единственные посты в тему тут мои))
Напомнил про былое? будь добр закрой тему отписавшись там:
- да способ есть и он проходит все проверки из того топика
- нет, ничего придумать неудалось
zub
долгожитель
 
Сообщения: 2887
Зарегистрирован: 14.11.2005 23:51:26

Пред.След.

Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 215

Рейтинг@Mail.ru
cron