TTreeView - WARNING: TResourceCacheItem.IncreaseRefCount

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

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

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

Сообщение Лекс Айрин »

jakyro писал(а):Если хочешь там что-то с ShowMessage навязать, то ShowMessage тут не причём. В ShowMessage ты выводишь какой-то конкретный результат,


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

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

Это бесполезная работа. Тебе сказали как можно проверить (и возможно проверить) функцию логгирования.
Аватара пользователя
and
постоялец
Сообщения: 124
Зарегистрирован: 16.09.2009 17:11:01
Откуда: г. Гомель, Беларусь

Сообщение and »

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

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

Сообщение Лекс Айрин »

and писал(а):Чем-нибудь подпереть это утверждение можете?

А чисто логически подумать? Cmd (а потом и DOSBox) это программа эмулирующая консоль. То есть, это, фактически, обманка, которая является win приложением, но не полноценным режимом консоли. Если хотите доказательств, то запустите в DOS тот же far, которые есть виндовое приложение и под дос не работает.
Если под линуксом, то уроните графическую оболочку и запустите любое графическое приложение требующее выхлопа в консоль.
Ну и, для ленивых. https://msdn.microsoft.com/ru-ru/library/0wc2kk78(v=vs.90).aspx
Поскольку консольные приложения выполняют ввод и вывод данных через командную строку, они идеально подходят для быстрого ознакомления с возможностями языка и написания служебных программ командной строки.
Аватара пользователя
and
постоялец
Сообщения: 124
Зарегистрирован: 16.09.2009 17:11:01
Откуда: г. Гомель, Беларусь

Сообщение and »

Лекс Айрин писал(а):
and писал(а):Чем-нибудь подпереть это утверждение можете?

А чисто логически подумать?
То есть, не можете ничем, кроме [s]собственных фантазий[/s] "логического подумывания". Почему я не удивлён?..

Лекс Айрин писал(а):Cmd (а потом и DOSBox) это программа эмулирующая консоль. То есть, это, фактически, обманка, которая является win приложением, но не полноценным режимом консоли. Если хотите доказательств, то запустите в DOS тот же far, которые есть виндовое приложение и под дос не работает.
"В огороде бузина..." Midnight Commander тоже не работает под DOS. Он тоже не консольное приложение? :-D
А может, мы друг друга не понимаем? Что в Вашем словаре есть "полноценный режим консоли"? Поделитесь определением plz.
Лекс Айрин писал(а):Ну и, для ленивых. https://msdn.microsoft.com/ru-ru/library/0wc2kk78(v=vs.90).aspx
Поскольку консольные приложения выполняют ввод и вывод данных через командную строку, они идеально подходят для быстрого ознакомления с возможностями языка и написания служебных программ командной строки.
И что? Не обнаруживаю ни слова в подтверждение Вашего тезиса.
Аватара пользователя
Лекс Айрин
долгожитель
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград
Контактная информация:

Сообщение Лекс Айрин »

and писал(а):Что в Вашем словаре есть "полноценный режим консоли"? Поделитесь определением plz.

полноценный режим консоли это режим, когда отсутствует доступ к графическому интерфейсу пользователя. То есть, ввод идет с консоли и вывод идет туда же. в винде консольный режим работы присутствовал до Millenium версии. (в) В NT версиях его не было никогда.
and писал(а): что? Не обнаруживаю ни слова в подтверждение Вашего тезиса.


А то, что в них просто нет ввода/вывода в иное окно, кроме эмулятора DOS. Это же сказано прямо. А если есть и окно и (псевдо)терминал, то это все же GUI версия программы, но никак не консольная.
Аватара пользователя
and
постоялец
Сообщения: 124
Зарегистрирован: 16.09.2009 17:11:01
Откуда: г. Гомель, Беларусь

Сообщение and »

Лекс Айрин писал(а):полноценный режим консоли это режим, когда отсутствует доступ к графическому интерфейсу пользователя
Значит, таки нестыковка словарей.
Консольное приложение - это приложение, с которым ассоциированы три стандартных потока ввода-вывода. Всё. Точка. Есть ли при этом гуйня, нет ли гуйни - совершенно не определяющий фактор.
Лекс Айрин писал(а):в винде консольный режим работы присутствовал до Millenium версии. (в) В NT версиях его не было никогда.
Дааа лааадно! В мастдайках (если подзабыли древний жаргон - это линейка 9x: 95/95OSR2/98/98SE/Me) консоль была совершенно такая же, как у NT-линейки. (Да, я в курсе, что реализована она была иначе - но рояли не играет).
 
Ааааа, понял! Вы не о консоли мастдайной говорили, а о DOSMode - той части ОС, которая грузилась без shell'а. Так... это... тёплое с мягким Вы путаете. Вы б ещё real mode сюда приплели, для вящей неразберихи.

Добавлено спустя 10 минут 53 секунды:
Лекс Айрин писал(а):в них просто нет ввода/вывода в иное окно, кроме эмулятора DOS. Это же сказано прямо.
"Мартышка к старости слаба глазами стала". Ткните plz пальцем, где сказано, что я не могу (или хотя бы идеологически не имею права) создать там иное окно.
Лекс Айрин писал(а):А если есть и окно и (псевдо)терминал, то это все же GUI версия программы, но никак не консольная.
А, понял! Чтобы считаться "истинно консольным", нужно не только иметь консоль, но и не иметь GUI :-D
А почему гибридная программа у Вас "гуёвая с консолью", а не "консольная с GUI"? Дискриминация-с! :-)))
Аватара пользователя
Лекс Айрин
долгожитель
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград
Контактная информация:

Сообщение Лекс Айрин »

and писал(а):Есть ли при этом гуйня, нет ли гуйни - совершенно не определяющий фактор.


Как раз таки определяющий. Не забываем, что графический режим изначально появился как надстройка над текстовой консолью.
Консоль, изначально, это не командная строка+ экран, а средство ввода+средство вывода. Причем, никто не говорит, что это должны быть клавиатура+экран. Изначально это были перфокарты+принтер (или те же перфокарты). Экран (монитор) мог вполне и отсутствовать.

В винде консольный режим изначально средство запуска старых (досовских) приложений. Часть из них была предназначена чисто для настройки/ремонта системы, то их нельзя было просто удалить. И так как замены им не было, то пришлось делать эмулятор доса. Который и назвали консолью (до этого просто не было необходимости различать dos/win, так как программ с мордой не существовало). когда движение чистоту винды достигло апогея.

Самое смешное, что в линуксе появление графического режима не потребовало таких сложностей.

Добавлено спустя 1 минуту 36 секунд:
and писал(а):Ткните plz пальцем, где сказано, что я не могу (или хотя бы идеологически не имею права) создать там иное окно.


Я ткнул. Видящий найдет.

and писал(а):А, понял! Чтобы считаться "истинно консольным", нужно не только иметь консоль, но и не иметь GUI :-D


да.

Добавлено спустя 2 минуты 54 секунды:
and писал(а):А почему гибридная программа у Вас "гуёвая с консолью", а не "консольная с GUI"? Дискриминация-с! :-)))


потому что консольная с ГУИ не будет иметь малый размер (добавляется код показа ГУИ окна),что противоречит словам корпорации майкрософт. Даже псевдо ГУЙ требует больших накладных расходов.
Аватара пользователя
and
постоялец
Сообщения: 124
Зарегистрирован: 16.09.2009 17:11:01
Откуда: г. Гомель, Беларусь

Сообщение and »

Лекс Айрин писал(а):Консоль, изначально, это не командная строка+ экран, а средство ввода+средство вывода. Причем, никто не говорит, что это должны быть клавиатура+экран. Изначально это были перфокарты+принтер (или те же перфокарты). Экран (монитор) мог вполне и отсутствовать.
Вот странно. Всё Вы вроде знаете и понимаете, судя по этой цитате. Но как доходит до выводов...
 
Лекс Айрин писал(а):графический режим изначально появился как надстройка над текстовой консолью
Да лааадно!.. Консоль и графическая оболочка - совершенно не связанные отношениями "базис-надстройка" вещи, они каждая сама по себе. Каждая из них - совершенно самостоятельная надстройка над ядром.
Лекс Айрин писал(а):пришлось делать эмулятор доса. Который и назвали консолью
Нет. Понятие консоли ортогонально DOS/Win/etc.
Лекс Айрин писал(а):программ с мордой не существовало
Да лааадно!.. Расскажите это это разработчикам досовских игр, графредакторов, CAD'ов... Или Борланду с его GraphicVision'ом. (Кстати, их же TurboVision - канонический борландовский интерфейс, созданный для текстового режима - тоже называли GUI, как бы парадоксально это ни звучало. Но не будем об этом вспоминать, чтоб ещё больше не запутаться.)
Лекс Айрин писал(а):консольная с ГУИ не будет иметь малый размер (добавляется код показа ГУИ окна),что противоречит словам корпорации майкрософт
Каким словам? А огромное консольное приложение - ужЕ не консольное? А крошечное гуёвое - оно консольное?
Не плодите лишних сущностей! А то придёт Оккам - и бритвочкой по горлу.
Лекс Айрин писал(а):
and писал(а):А, понял! Чтобы считаться "истинно консольным", нужно не только иметь консоль, но и не иметь GUI :-D
да.
Нет.
Консоль - текстовый (то есть, оперирующий символами) интерфейс stdin/stdout/stderr. Как Вы справедливо заметили, это вовсе не обязательно дисплей (или экранное окно) + клавиатура.
GUI shell (в современном понимании) - оболочка, оперирующая пикселями.
Прочие Ваши умопостроения - фантазии от лукавого.
Приложение может быть и гуёвым, и консольным одновременно. Это нигде и никем afaik не запрещено. Ни в Win, ни в *nix. Если Вы (или кто-то ещё из форумчан) имеет иные сведения - с благодарностью выслушаю. И посыплю голову пеплом, и обзову себя говнокодером - ибо с самого начала своего знакомства с Lazarus'ом, т.е. лет 6-7 ужЕ, только через консоль и отлаживаюсь. А release-режим сборки, в числе прочего, ещё и отключает консоль. Главное не забывать WriteLn'ы повычищать :-) (WriteLn imho удобнее, чем DebugLn).
Аватара пользователя
Лекс Айрин
долгожитель
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград
Контактная информация:

Сообщение Лекс Айрин »

and писал(а):ибо с самого начала своего знакомства с Lazarus'ом, т.е. лет 6-7 ужЕ, только через консоль и отлаживаюсь.


Вообще, я с компами общаюсь примерно с двухтысячного. И вначале осваивал дос. и примерно тогда учился программировать. И приемы отладки у меня еще тех времен. Я не буду ничего доказывать. Тем более, что всё уже всем должно быть понятно.

Скажу честно -- мне просто лень засорять форум. Хочется вам считать, что консольные обязательно показывают консоль и могут иметь гуевое окно -- считайте. Флаг в руки, зубочистку в зубы и вперед. Но вообще, подобный режим называется программа с отладочной консолью.
За сим прекращаю срач.
Аватара пользователя
and
постоялец
Сообщения: 124
Зарегистрирован: 16.09.2009 17:11:01
Откуда: г. Гомель, Беларусь

Сообщение and »

Лекс Айрин писал(а):Вообще, я с компами общаюсь примерно с двухтысячного. И вначале осваивал дос. и примерно тогда учился программировать.
"Вообще", я - с 1991г. Тоже DOS (естественно) на IBM-совместимой Искра-1030 плюс CP/M на ДВК. И что? Какое имеет отношение к нашей дискуссии эта не то ностальгия, не то фаллометрия?
 
OK, действительно, стОит сворачиваться. Сытый голодного не разумеет.

Добавлено спустя 3 минуты 59 секунд:
О как! Глянул правее своего поста - а там
Зарегистрирован: 16 сен 2009г.
Так что да, у меня недели полторы назад "днюха" была - 7 лет Lazarus + FPC + freepascal.ru/forum :-)
Alex2013
долгожитель
Сообщения: 3211
Зарегистрирован: 03.04.2013 11:59:44

Сообщение Alex2013 »

Брр... "спор слепого с глухим" ...

1 Консоль даже в виндовс не эмулятор ДОСа
2 Например FAR консольная программа но это нигде не ДОС .
3 То что виндовс можно с грехом-пополам запускать "нативые Дос программы" совершенно отдельная песня
(У дос-программ даже формат исполняемого файла совсем другой и запускаются они совсем иначе )

4 Гибридные программы вполне работают (Вот доказательство правда это Линукс и старый Лазарус но принцип понятен )
Кстати тоже что-то на старте выдало :
[WARNING] Out of OEM specific VK codes, changing to unassigned
[WARNING] Out of unassigned VK codes, assigning $FF

...но дальше все тихо . И GUI-кнопка c Writeln ('1') в обработчике вполне делает свое "черное дело"... :wink:
ИзображениеИзображение
Иногда можно просто директиву компилятора в проект кинуть
{$APPTYPE XXX} Выбор типа приложения. XXX=
Console – консольное.
GUI – графическое.


Да иногда встречается что-то вроде описанного случая ... Это обычно это срабатывание исключения то есть где-то в коде LCL явно записано
try
< Инструкции >

except // Исключения
Writeln ( ...)

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

Сообщение Лекс Айрин »

Alex2013 писал(а):(У дос-программ даже формат исполняемого файла совсем другой и запускаются они совсем иначе )

Не такой уж и другой. Просто добавляется дополнительный заголовок. Теоретически, можно даже написать прогу запускаемую как в дос, так и в виндовс. Только ни разу подобных прог не видел.
Alex2013 писал(а): Гибридные программы вполне работают (Вот доказательство правда это Линукс и старый Лазарус но принцип понятен )
Кстати тоже что-то на старте выдало :


гибридной была бы прога которая при запуске в консоли использовало только консоль, а при запуске вне ее графическое окно. но спорить не собираюсь, так как просто тупо бесполезно. Если не учитывается мнение даже microsoft, то иные приводить бесполезно.
Alex2013
долгожитель
Сообщения: 3211
Зарегистрирован: 03.04.2013 11:59:44

Сообщение Alex2013 »

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

Просто в Вин-программах обычно есть затычка пишущая в досе что-то вроде " This program cannot be run in DOS mode."
Но при запуске в видовс ось сразу определяет, что это не ДОС-программа и загружает ее совсем иначе ...

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

:?: А что мешает проверить ? Но задача стояла Консоль + GUI что я и показал .
Но можно сделать еще проще и выбирать режим по ключу в командной строке...
Зы
но спорить не собираюсь, так как просто тупо бесполезно.
:shock:
"Мне вообще ничего не нравится!"(с)Капитан Смоллетт ... :D :D :D
Я вообще не спорил . :wink: Я просто поделился мнением и тем что точно знаю . :idea:
Ответить