out of system resources что за ошибка

Out of system resources что за ошибка

Существует довольно большой класс программ, называемых утилитами. Это такие мелкие, как правило, программки. которые делают что-то сравнительно простое, но полезное. А среди утилит есть «подкласс», занимающийся мониторингом системы и выдающий пользователю самую разную информацию о компьютере, на котором он работает, например, свободное пространство на диске, количество принятых/переданных по сети данных, размер свободной оперативной памяти… И во многих из этих утилит есть такой показатель, как свободные системные ресурсы.

Показатель этот довольно важный, но вот если попробовать расспросить пользователей о том, что же это такое, то наверняка большинство задумается и, в лучшем случае, скажет, что «больше свободных ресурсов — это хорошо!». Некоторые считают, что это показатель количества памяти, и что если компьютеру постоянно не хватает ресурсов, то надо идти покупать новый DIMM… Некоторые думают, что это как-то связанно со скоростью процессора… Встречалась мне и оригинальная теория, что это некая интегрированная величина, характеризующая производительность компьютера, в которой учитываются и память, и процессор, и размер винчестера, и объем видеопамяти…

Увы, все это далеко от истины. Ресурс в Windows — это практически любой объект, например, окно программы, кнопка, открытый файл и т.д. и т.п. Когда программе требуется воспользоваться каким-то ресурсом, она обращается к операционной системе с просьбой его создать или загрузить. Например, программа говорит: «Windows, мне надо создать окно размером 320 на 240 пикселей». Windows в ответ создает требуемое окно и возвращает программе некое число, указывающее на этот ресурс. «Я создала ваше окно, его номер 12345». Программа после этого оперирует полученным числом для того, чтобы проделать какие-то манипуляции с ресурсом. «Windows, покажи-ка окно 12345 в правом верхнем углу экрана». «Сделано!». В конце, когда программе больше не требуется указанный ресурс, она просит Windows его удалить.

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

На Intel-машинах указатель имеет размер в 4 байта. Т.е. если программе требуется хранить указатель на какой-то ресурс, то ей придется потратить на него 4 байта памяти. Это было довольно существенной проблемой при разработке Windows, т.к. в те времена компьютеры были весьма ограничены — средняя машина имела 2-4 мегабайта оперативной памяти. А каждая программа может задействовать тысячи ресурсов в своей работе. И если бы в качестве указателей использователись четырехбайтовые значения, то весьма ощутимая часть памяти тратилась бы просто на хранение этих указателей…

И разработчики Windows пошли по другому пути — они создали таблицу ресурсов. Таблица ресурсов — это довольно длинный список, содержащий информацию обо всех ресурсах, которые находятся в памяти в данный момент. И когда программа просит Windows загрузить какой-то ресурс, то Windows просматривает таблицу ресурсов, находит пустую строчку и вписывает в нее информацию о свежесозданном ресурсе. И после этого программе возвращается не четырехбайтовый указатель на ресурс, а номер строчки таблицы, в которой записана информация о ресурсе, как бы «ссылка на ссылку на ресурс». А т.к. размер индекса таблицы ресурсов не 4, а 2 байта, то расход памяти на хранение указателей заметно сокращается. И в те времена, когда память компьютеров была сильно ограничена это было весьма ощутимым достижением!

Разумеется, эта схема не лишена недостатков. Количество чисел, которые можно передать с помощью определенного числа байт ограниченно. Если у вас есть 4 байта памяти, то вы можете адресовать свыше 4 миллиардов ресурсов, двумя байтами — только 65536. Таким образом, в каждый момент времени в Windows не может быть загружено больше, чем 65536 ресурсов — если их будет больше, то у программы не будет возможности к ним обратиться! Но в те времена, когда эта схема разрабатывалась у компьютера просто не было достаточно памяти, чтобы разместить в ней больше нескольких тысяч ресурсов, так что это ограничение не было столь существенным…

В наши дни ситуация изменилась. Память резко подешевела и экономия памяти на использовании двухбайтовых указателей вместо четырехбайтовых практически незаметна. Памяти среднего компьютера вполне хватило бы на то, чтобы хранить сотни тысяч ресурсов одновременно. Но… Наследие прошлого не позволяет адресовать больше чем 65536 ресурсов! И как только вы пытаетесь создать еще один, то компьютер оказывается «out of resources», независимо от количества свободной памяти…

Почему же Microsoft не хочет увеличить размерность указателей, скажем, задействовать 4 байта вместо двух? Ответ прост — требуется сохранить совместимость со старыми программами. Если изменить размерность указателей, то придется переписывать все программы, т.к. иначе они просто перестанут работать. А покупателям это не понравится…

И вот, вместо того, чтобы решить задачу раз и навсегда (попутно развалив существующий рынок программного обеспечения!), Microsoft начал делать различные исправления, стараясь смягчить проблему. Наиболее существенным шагом было разделение таблицы ресурсов на три части. Если заглянуть внутрь Windows, то вы увидите, что значительная часть кода находится в трех библиотеках — USER (которая содержит большинство функций для работы с интерфейсом пользователя), GDI (где находятся функции для работы с графикой и шрифтами) и KERNEL (которая содержит функции для работы с железом, управления задачами, памятью и т.п.).

Когда пользовательская программа просит Windows что-либо сделать, то почти всегда это осуществляется вызовом функций, хранящихся в одной из этих библиотек. И разработчики Windows сумели модифицировать свою операционную систему таким образом, что вместо одной таблицы ресурсов стало использоваться три. Если программа хочет создать окно, то этот ресурс помещается в таблицу USER; если производятся какие-то манипуляции с картинкой, то ресурс хранится в таблице GDI; а если открывается файл, то указатель на этот файл хранится в таблице KERNEL (на самом деле, все немножко сложнее, но это описание дает представление об идее).

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

В Windows NT ситуация немножко отличается — там каждая программа логически отделена от других и не имеет такого доступа к «чужим» ресурсам, как в Win9x. Благодаря этому у каждой программы имеется своя таблица, что позволяет компьютеру держать в памяти намного больше ресурсов. Кстати, это же является причиной из-за которой многие программы, разработанные для Win9x не хотят работать под NT…

Ну и в конце этой заметки немножко практики:

Основным проявлением нехватки ресурсов является замедление реакции Windows, непрорисовка окон, сообщения об ошибках и т.п. Причем, часто случается так, что закрытие приложений не помогает или помогает ненадолго — дело в том, что при запуске какой-то программы она может загрузить «общие» библиотеки, т.е. такие, которые могут использоваться разными приложениями. Эти библиотеки тоже задействуют какие-то ресурсы. И после закрытия первоначальной программы Windows эти ресурсы не освободит — ведь они могут понадобиться кому-то еще… В этом случае, увы, помогает только перезагрузка.

Наиболее «ресурсоемкими» программами являются различные мультимедийные приложения (особенно Active desktop), веб-браузеры, программы загружающие большое количество шрифтов (например, MS Office 2000 при запуске загружает в GDI таблицу все установленные в системе шрифты). У старых 16-ти битных программ есть одно неприятное свойство — задействованные ими ресурсы не освобождаются до тех пор, пока не будут закрыты все 16-ти битные приложения…

Так что, если в процессе работы вам требуется держать открытыми множество программ и вы периодически сталкиваетесь с нехваткой ресурсов, то задумайтесь о переходе на «более свежую» версию Windows, базирующуюся на архитектуре NT. В частности, домашняя верия Windows XP зарекомендовала себя очень неплохо — помимо многочисленных улучшений в самой операционной системе, в нее встроена довольно приличная система обеспечения совместимости со старыми программами и, по крайней мере у меня, при переходе на нее не возникло практически никаких проблем, а вот количество зависаний и падений очень заметно уменьшилось…

out of system resources что за ошибка. Смотреть фото out of system resources что за ошибка. Смотреть картинку out of system resources что за ошибка. Картинка про out of system resources что за ошибка. Фото out of system resources что за ошибка

Ситуация следующуя:
делаю игровую прогу, в ней динамически меняется некая картинка.
Есть у меня два изображения, в которых уже загружены нужные «кадры» – их всего 2. И в третьем изображении (TImage), а в нужные моменты показываю нужное изобпражение. Делаю это дело Assign`ом:

Ну так вот примерно после 40 изменений (скорее всего их всеже 80 – туда и обратно ) появляется ошибка:

Цитата (Delphi)
Out of system resources

Что это есть такое? Как с ним бороться? или я может чего-то не так делаю? В общем помогите кто чем может?

Источник

Out of system resources что за ошибка

10к компонентов) при открытии теперь вылетает ошибка «Out of system resources». При попытке открыть редактор строк (двойным кликом по компоненту, например message) вылетает ошибка 87, при этом даже скриншот при активном окне hiasm сделать не удаётся («недостаточно памяти для создания рисунка»). (Чтобы сделать скриншот, пришлось сделать окно hiasm неактивным.)

Похожие проблемы я видел на форуме:
https://forum.hiasm.com/topic/51880
https://forum.hiasm.com/topic/10532/1
Там nesco предлагал увеличить в системе иконный кэш, но не описал, как это сделать. В интернете нахожу только HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Max Cached Icons, который выставляю в 10000, перезагружаю комп, но ошибка hiasm не исчезает.

nesco, что же нужно сделать?

— Добавлено в 2020-01-20 22:17:40

Редактировалось 4 раз(а), последний 2020-01-20 22:41:10

Редактировалось 1 раз(а), последний 2020-01-20 23:29:10

Редактировалось 2 раз(а), последний 2020-01-21 09:06:48

Nic, схема, думаю, ни при чём. Потому что ошибка начала возникать после того как скопировал кусок этой же схемы в другое место схемы. Видимо, компонентов слишком много. А когда копирую этот же кусок в новую, пустую схему, никакой ошибки там нет.

Я потому в первом посте и написал ссылки на топики, где подобное обсуждалось. Видимо, переполнение какого-то ресурсы, раз даже у Dilma это возникало. nesco тогда обмолвился, высказал идею устранения ошибки, а теперь что-то молчит. Вот и не знаю, куда копать.

Такого быть не может пока программа не использует предел памяти в 4Гб.

P.S. Обратите внимание на свойства элементов, которые используют ссылки на менеджеры.

Редактировалось 2 раз(а), последний 2020-01-21 09:20:23

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

Редактировалось 4 раз(а), последний 2020-01-21 13:03:47

Я, кстати, в своей программе когда-то столкнулся с таким: через некоторое продолжительное время программа падала с ошибкой. Оказалось, в функции отрисовки забыл освобождать хендл региона. Из-за чего переполнялся лимит объектов GDI. Поднятие лимита продлило бы мучения программы, но от ошибки не избавило бы.

Редактировалось 1 раз(а), последний 2020-01-22 18:07:35

99% это говорится про открытие схемы в среде, а не о чём то другом. Парсинг схемы может выдавать ошибки, если они есть в схеме. Также ошибки могут возникать при отображении свойств выделенного элемента на схеме. Поэтому, скорее всего кусок схемы, который был скопирован в саму схему был довольно сложным, чтобы это привело к полученному результату. Уже делал предположение что виноваты менеджеры, но пока это не проверит автор мы не узнаем наверняка.

Редактировалось 1 раз(а), последний 2020-01-21 14:10:06

Объекты USER = 195
Объекты GDI = 9 999

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

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

— Добавлено в 2020-01-21 18:48:13

Редактировалось 1 раз(а), последний 2020-01-21 18:48:13

Источник

Out of system resources

initialization
ReportMemoryLeaksOnShutdown := True; //показал что виноваты TBitmap

Ошибка out of system resources
Добрый день. В программе есть DBGrid, в котором есть колонка COUNTRY в которой изображаться флаг.

out of system resources что за ошибка. Смотреть фото out of system resources что за ошибка. Смотреть картинку out of system resources что за ошибка. Картинка про out of system resources что за ошибка. Фото out of system resources что за ошибкаОшибка в коде: «out of system resources BitBlt»
Все было норм, пока спустя какое то время не столкнулся с проблемой «out of system resources.

ты уничтожаешь ВТОРОЙ битмап. Вопрос: куда делся первый?

Добавлено через 36 секунд
УБРАТЬ!

Стало понятно, что «Out of system resources» вызывает библиотека ut_package, видимо неправильно очищает ресурсы после её применения.

Поэтому решил для обработки файлов запускать её в консольном приложении, чтобы после закрытия консоли ресурсы освободились.

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

Процедура получения из консоли:

Ошибка в Delphi! «Out of system resources delphi»
Помогите пожалуйста разобраться! Примерно через 5 мин. после запуска программы вылетает вот ЭТО.

Out of system resources
Суть программы в том, что летают самолёты, а пользователь двигает зениткой. Но самолёты пролетают.

Ошибка Out of system resources
На программу сервер поступают значения и паралельно рисуются на графике. Пока шел прием рисование.

Источник

«Out of resources» или еще один довод в пользу перехода на XP

Существует довольно большой класс программ, называемых утилитами. Это такие мелкие, как правило, программки. которые делают что-то сравнительно простое, но полезное. А среди утилит есть «подкласс», занимающийся мониторингом системы и выдающий пользователю самую разную информацию о компьютере, на котором он работает, например, свободное пространство на диске, количество принятых/переданных по сети данных, размер свободной оперативной памяти… И во многих из этих утилит есть такой показатель, как свободные системные ресурсы.

Показатель этот довольно важный, но вот если попробовать расспросить пользователей о том, что же это такое, то наверняка большинство задумается и, в лучшем случае, скажет, что «больше свободных ресурсов — это хорошо!». Некоторые считают, что это показатель количества памяти, и что если компьютеру постоянно не хватает ресурсов, то надо идти покупать новый DIMM… Некоторые думают, что это как-то связанно со скоростью процессора… Встречалась мне и оригинальная теория, что это некая интегрированная величина, характеризующая производительность компьютера, в которой учитываются и память, и процессор, и размер винчестера, и объем видеопамяти…

Увы, все это далеко от истины. Ресурс в Windows — это практически любой объект, например, окно программы, кнопка, открытый файл и т.д. и т.п. Когда программе требуется воспользоваться каким-то ресурсом, она обращается к операционной системе с просьбой его создать или загрузить. Например, программа говорит: «Windows, мне надо создать окно размером 320 на 240 пикселей». Windows в ответ создает требуемое окно и возвращает программе некое число, указывающее на этот ресурс. «Я создала ваше окно, его номер 12345». Программа после этого оперирует полученным числом для того, чтобы проделать какие-то манипуляции с ресурсом. «Windows, покажи-ка окно 12345 в правом верхнем углу экрана». «Сделано!». В конце, когда программе больше не требуется указанный ресурс, она просит Windows его удалить.

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

На Intel-машинах указатель имеет размер в 4 байта. Т.е. если программе требуется хранить указатель на какой-то ресурс, то ей придется потратить на него 4 байта памяти. Это было довольно существенной проблемой при разработке Windows, т.к. в те времена компьютеры были весьма ограничены — средняя машина имела 2-4 мегабайта оперативной памяти. А каждая программа может задействовать тысячи ресурсов в своей работе. И если бы в качестве указателей использователись четырехбайтовые значения, то весьма ощутимая часть памяти тратилась бы просто на хранение этих указателей…

И разработчики Windows пошли по другому пути — они создали таблицу ресурсов. Таблица ресурсов — это довольно длинный список, содержащий информацию обо всех ресурсах, которые находятся в памяти в данный момент. И когда программа просит Windows загрузить какой-то ресурс, то Windows просматривает таблицу ресурсов, находит пустую строчку и вписывает в нее информацию о свежесозданном ресурсе. И после этого программе возвращается не четырехбайтовый указатель на ресурс, а номер строчки таблицы, в которой записана информация о ресурсе, как бы «ссылка на ссылку на ресурс». А т.к. размер индекса таблицы ресурсов не 4, а 2 байта, то расход памяти на хранение указателей заметно сокращается. И в те времена, когда память компьютеров была сильно ограничена это было весьма ощутимым достижением!

Разумеется, эта схема не лишена недостатков. Количество чисел, которые можно передать с помощью определенного числа байт ограниченно. Если у вас есть 4 байта памяти, то вы можете адресовать свыше 4 миллиардов ресурсов, двумя байтами — только 65536. Таким образом, в каждый момент времени в Windows не может быть загружено больше, чем 65536 ресурсов — если их будет больше, то у программы не будет возможности к ним обратиться! Но в те времена, когда эта схема разрабатывалась у компьютера просто не было достаточно памяти, чтобы разместить в ней больше нескольких тысяч ресурсов, так что это ограничение не было столь существенным…

В наши дни ситуация изменилась. Память резко подешевела и экономия памяти на использовании двухбайтовых указателей вместо четырехбайтовых практически незаметна. Памяти среднего компьютера вполне хватило бы на то, чтобы хранить сотни тысяч ресурсов одновременно. Но… Наследие прошлого не позволяет адресовать больше чем 65536 ресурсов! И как только вы пытаетесь создать еще один, то компьютер оказывается «out of resources», независимо от количества свободной памяти…

Почему же Microsoft не хочет увеличить размерность указателей, скажем, задействовать 4 байта вместо двух? Ответ прост — требуется сохранить совместимость со старыми программами. Если изменить размерность указателей, то придется переписывать все программы, т.к. иначе они просто перестанут работать. А покупателям это не понравится…

И вот, вместо того, чтобы решить задачу раз и навсегда (попутно развалив существующий рынок программного обеспечения!), Microsoft начал делать различные исправления, стараясь смягчить проблему. Наиболее существенным шагом было разделение таблицы ресурсов на три части. Если заглянуть внутрь Windows, то вы увидите, что значительная часть кода находится в трех библиотеках — USER (которая содержит большинство функций для работы с интерфейсом пользователя), GDI (где находятся функции для работы с графикой и шрифтами) и KERNEL (которая содержит функции для работы с железом, управления задачами, памятью и т.п.).

Когда пользовательская программа просит Windows что-либо сделать, то почти всегда это осуществляется вызовом функций, хранящихся в одной из этих библиотек. И разработчики Windows сумели модифицировать свою операционную систему таким образом, что вместо одной таблицы ресурсов стало использоваться три. Если программа хочет создать окно, то этот ресурс помещается в таблицу USER; если производятся какие-то манипуляции с картинкой, то ресурс хранится в таблице GDI; а если открывается файл, то указатель на этот файл хранится в таблице KERNEL (на самом деле, все немножко сложнее, но это описание дает представление об идее).

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

В Windows NT ситуация немножко отличается — там каждая программа логически отделена от других и не имеет такого доступа к «чужим» ресурсам, как в Win9x. Благодаря этому у каждой программы имеется своя таблица, что позволяет компьютеру держать в памяти намного больше ресурсов. Кстати, это же является причиной из-за которой многие программы, разработанные для Win9x не хотят работать под NT…

Ну и в конце этой заметки немножко практики:

Основным проявлением нехватки ресурсов является замедление реакции Windows, непрорисовка окон, сообщения об ошибках и т.п. Причем, часто случается так, что закрытие приложений не помогает или помогает ненадолго — дело в том, что при запуске какой-то программы она может загрузить «общие» библиотеки, т.е. такие, которые могут использоваться разными приложениями. Эти библиотеки тоже задействуют какие-то ресурсы. И после закрытия первоначальной программы Windows эти ресурсы не освободит — ведь они могут понадобиться кому-то еще… В этом случае, увы, помогает только перезагрузка.

Наиболее «ресурсоемкими» программами являются различные мультимедийные приложения (особенно Active desktop), веб-браузеры, программы загружающие большое количество шрифтов (например, MS Office 2000 при запуске загружает в GDI таблицу все установленные в системе шрифты). У старых 16-ти битных программ есть одно неприятное свойство — задействованные ими ресурсы не освобождаются до тех пор, пока не будут закрыты все 16-ти битные приложения…

Так что, если в процессе работы вам требуется держать открытыми множество программ и вы периодически сталкиваетесь с нехваткой ресурсов, то задумайтесь о переходе на «более свежую» версию Windows, базирующуюся на архитектуре NT. В частности, домашняя верия Windows XP зарекомендовала себя очень неплохо — помимо многочисленных улучшений в самой операционной системе, в нее встроена довольно приличная система обеспечения совместимости со старыми программами и, по крайней мере у меня, при переходе на нее не возникло практически никаких проблем, а вот количество зависаний и падений очень заметно уменьшилось…

Источник

Out of system resources что за ошибка

Если не затруднит, прошу помочь с решением задачи.

out of system resources что за ошибка. Смотреть фото out of system resources что за ошибка. Смотреть картинку out of system resources что за ошибка. Картинка про out of system resources что за ошибка. Фото out of system resources что за ошибкаout of system resources что за ошибка. Смотреть фото out of system resources что за ошибка. Смотреть картинку out of system resources что за ошибка. Картинка про out of system resources что за ошибка. Фото out of system resources что за ошибка
KSergey © ( 2009-02-17 17:20 ) [1]

казалось бы, при чем тут Synchronize и TCriticalSection?

что-то мне говорит о том, что гугль должен подсказать кучу готовых программ по записи мультиков с монитора, вероятно в некоторых из них так же поддерживается запись и во время WinLogon


> что-то мне говорит о том, что гугль должен подсказать кучу
> готовых программ по записи мультиков с монитора

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

out of system resources что за ошибка. Смотреть фото out of system resources что за ошибка. Смотреть картинку out of system resources что за ошибка. Картинка про out of system resources что за ошибка. Фото out of system resources что за ошибкаout of system resources что за ошибка. Смотреть фото out of system resources что за ошибка. Смотреть картинку out of system resources что за ошибка. Картинка про out of system resources что за ошибка. Фото out of system resources что за ошибка
clickmaker © ( 2009-02-17 22:17 ) [3]

а зачем Synchronize(SaveBmp);?
сохранение (асли в один и тот же файл) оберни в критическую секцию.
и не совсем понятно, что за форма, и зачем она нужна


> а зачем Synchronize(SaveBmp);?

Это я тестировал, при Synchronize при клике на форму ошибка не вылатает, но вместо скришота белый экран.

А если обернуть в критическую секцию, то скриншот получается, но при клике наформу, либо перетаскивании и в общем при взаимодействии с формой вылетает ошибка «Out of system resources». Вот я и ищу ответа как избежать этой ошбки.

ПС. Форма нужна, зачем, другой впрос.

> ошибка «Out of system resources».

скорей всего возникает при нехватке DC

меню, TreeView, ListView и прочие контролы на форме используются?
и все-таки: зачем нужна форма?

out of system resources что за ошибка. Смотреть фото out of system resources что за ошибка. Смотреть картинку out of system resources что за ошибка. Картинка про out of system resources что за ошибка. Фото out of system resources что за ошибкаout of system resources что за ошибка. Смотреть фото out of system resources что за ошибка. Смотреть картинку out of system resources что за ошибка. Картинка про out of system resources что за ошибка. Фото out of system resources что за ошибка
clickmaker © ( 2009-02-17 23:07 ) [6]

то есть, я намекаю на то, что где-то имеет место быть нефиговая утечка ресурсов
скорей всего, где-то не освобождается какой-то Bitmap или Canvas

out of system resources что за ошибка. Смотреть фото out of system resources что за ошибка. Смотреть картинку out of system resources что за ошибка. Картинка про out of system resources что за ошибка. Фото out of system resources что за ошибкаout of system resources что за ошибка. Смотреть фото out of system resources что за ошибка. Смотреть картинку out of system resources что за ошибка. Картинка про out of system resources что за ошибка. Фото out of system resources что за ошибка
kami © ( 2009-02-18 00:15 ) [7]

при помощи Synchronize SetThreadDesktop не отработает на Winlogon десктопе по причине The SetThreadDesktop function will fail if the calling thread has any windows or hooks on its current desktop (unless the hDesktop parameter is a handle to the current desktop)
Так как Synchronize выполняет код в контексте «основного» потока, содержащего, как я понял, кучу окон (GUI приложение).

Вывод: Synchronize убрать куда подальше и код, где инициализируется/уничтожается Bmp в студию, чтобы можно было говорить о утечке ресурсов более конкретно.

out of system resources что за ошибка. Смотреть фото out of system resources что за ошибка. Смотреть картинку out of system resources что за ошибка. Картинка про out of system resources что за ошибка. Фото out of system resources что за ошибкаout of system resources что за ошибка. Смотреть фото out of system resources что за ошибка. Смотреть картинку out of system resources что за ошибка. Картинка про out of system resources что за ошибка. Фото out of system resources что за ошибка
KSergey © ( 2009-02-18 07:19 ) [8]

> Alex22 (17.02.09 21:26) [2]
> Готовое не подойдет, т.к. нужно реализовать именно собственное решение, которое вероятно в будущем будет расширяться.

супер богатые велосипедисты. Ну взять какой-либо проект в исходниках, оно есть!

Форма пока «голая», вот сам исходник: http://webfile.ru/2638381

out of system resources что за ошибка. Смотреть фото out of system resources что за ошибка. Смотреть картинку out of system resources что за ошибка. Картинка про out of system resources что за ошибка. Фото out of system resources что за ошибкаout of system resources что за ошибка. Смотреть фото out of system resources что за ошибка. Смотреть картинку out of system resources что за ошибка. Картинка про out of system resources что за ошибка. Фото out of system resources что за ошибка
clickmaker © ( 2009-02-18 12:39 ) [12]

> В данном случае это играет какую-то роль для решения задачи?

зачем лишний посредник в лице таймера?
while not Terminated do begin
SaveBmp;
Sleep(100);
end;


> исправление на ReleaseDC(GetDesktopWindow,dc) ничего не
> дает

под какой ОС нехватка ресурсов? На 2003 у меня нормально работает

out of system resources что за ошибка. Смотреть фото out of system resources что за ошибка. Смотреть картинку out of system resources что за ошибка. Картинка про out of system resources что за ошибка. Фото out of system resources что за ошибкаout of system resources что за ошибка. Смотреть фото out of system resources что за ошибка. Смотреть картинку out of system resources что за ошибка. Картинка про out of system resources что за ошибка. Фото out of system resources что за ошибка
clickmaker © ( 2009-02-18 12:45 ) [13]

а в режиме формы в отладчике по стеку вызовов при «Out of system resources» не видно, откуда оно выбрасывается?

Тестирую под XP.
Ошибка возникает на строке
Bmp.SaveToFile(ExtractFilePath(ParamStr(0))+»\screen_»+Format(«%0.3d»,[fr_num])+».bmp»);

> Ошибка возникает на строке

а глубже-то не пробовал заходить?

out of system resources что за ошибка. Смотреть фото out of system resources что за ошибка. Смотреть картинку out of system resources что за ошибка. Картинка про out of system resources что за ошибка. Фото out of system resources что за ошибкаout of system resources что за ошибка. Смотреть фото out of system resources что за ошибка. Смотреть картинку out of system resources что за ошибка. Картинка про out of system resources что за ошибка. Фото out of system resources что за ошибка
Сергей М. © ( 2009-02-18 13:03 ) [16]

out of system resources что за ошибка. Смотреть фото out of system resources что за ошибка. Смотреть картинку out of system resources что за ошибка. Картинка про out of system resources что за ошибка. Фото out of system resources что за ошибкаout of system resources что за ошибка. Смотреть фото out of system resources что за ошибка. Смотреть картинку out of system resources что за ошибка. Картинка про out of system resources что за ошибка. Фото out of system resources что за ошибка
clickmaker © ( 2009-02-18 13:10 ) [17]

еще бы версию дельфи нефигово сказать. Потому что реализации SaveToFile могут отличаться

ПС. Использую Delphi 7.

out of system resources что за ошибка. Смотреть фото out of system resources что за ошибка. Смотреть картинку out of system resources что за ошибка. Картинка про out of system resources что за ошибка. Фото out of system resources что за ошибкаout of system resources что за ошибка. Смотреть фото out of system resources что за ошибка. Смотреть картинку out of system resources что за ошибка. Картинка про out of system resources что за ошибка. Фото out of system resources что за ошибка
Сергей М. © ( 2009-02-18 13:32 ) [19]

Малацца, далеко пойдешь)

А в чем состоит это различие (в нете покопался, но толкового разъяснения не нашел)?

out of system resources что за ошибка. Смотреть фото out of system resources что за ошибка. Смотреть картинку out of system resources что за ошибка. Картинка про out of system resources что за ошибка. Фото out of system resources что за ошибкаout of system resources что за ошибка. Смотреть фото out of system resources что за ошибка. Смотреть картинку out of system resources что за ошибка. Картинка про out of system resources что за ошибка. Фото out of system resources что за ошибка
clickmaker © ( 2009-02-18 13:51 ) [21]

out of system resources что за ошибка. Смотреть фото out of system resources что за ошибка. Смотреть картинку out of system resources что за ошибка. Картинка про out of system resources что за ошибка. Фото out of system resources что за ошибкаout of system resources что за ошибка. Смотреть фото out of system resources что за ошибка. Смотреть картинку out of system resources что за ошибка. Картинка про out of system resources что за ошибка. Фото out of system resources что за ошибка
Сергей М. © ( 2009-02-18 13:54 ) [22]


> в чем состоит это различие

И все таки, вопрос: можно как-то избежать ошибки при использовании CriticalSection (возникают при взаимодействии с формой)?

out of system resources что за ошибка. Смотреть фото out of system resources что за ошибка. Смотреть картинку out of system resources что за ошибка. Картинка про out of system resources что за ошибка. Фото out of system resources что за ошибкаout of system resources что за ошибка. Смотреть фото out of system resources что за ошибка. Смотреть картинку out of system resources что за ошибка. Картинка про out of system resources что за ошибка. Фото out of system resources что за ошибка
Сергей М. © ( 2009-02-19 14:26 ) [25]

procedure Get_Screen;
var
dc: hDC;
begin
DC:=GetDC(GetDesktopWindow); // Получаем дескpиптоp экpана
BitBlt(Bmp.Canvas.Handle,0,0,Screen.Width,Screen.Height,dc,0,0,SRCCOPY); // Копируем содержимое экрана
ReleaseDC(GetDesktopWindow,dc);

procedure TGet_ScreenThread.Execute;
begin
// Synchronize(SaveBmp);

inc(fr_num);
InitActiveDesktop;
Get_Screen;

procedure TfrmServer.Timer3Timer(Sender: TObject);
begin
GetScrThrd:=TGet_ScreenThread.Create(true);
GetScrThrd.FreeOnTerminate:=true;
GetScrThrd.Resume;
end;

В смысле пи клике на форму, перетаскивании и т.п.

out of system resources что за ошибка. Смотреть фото out of system resources что за ошибка. Смотреть картинку out of system resources что за ошибка. Картинка про out of system resources что за ошибка. Фото out of system resources что за ошибкаout of system resources что за ошибка. Смотреть фото out of system resources что за ошибка. Смотреть картинку out of system resources что за ошибка. Картинка про out of system resources что за ошибка. Фото out of system resources что за ошибка
Сергей М. © ( 2009-02-19 14:48 ) [28]

В данном коде нет, просто я поторопился.
Ну а во время работы программы (при клике на форму, ее перетаскивании и т.п.) возникает ошибка «Out of system resources».
Почему она возникакет и можно ее как-то избежать?

out of system resources что за ошибка. Смотреть фото out of system resources что за ошибка. Смотреть картинку out of system resources что за ошибка. Картинка про out of system resources что за ошибка. Фото out of system resources что за ошибкаout of system resources что за ошибка. Смотреть фото out of system resources что за ошибка. Смотреть картинку out of system resources что за ошибка. Картинка про out of system resources что за ошибка. Фото out of system resources что за ошибка
Сергей М. © ( 2009-02-19 15:36 ) [30]

out of system resources что за ошибка. Смотреть фото out of system resources что за ошибка. Смотреть картинку out of system resources что за ошибка. Картинка про out of system resources что за ошибка. Фото out of system resources что за ошибкаout of system resources что за ошибка. Смотреть фото out of system resources что за ошибка. Смотреть картинку out of system resources что за ошибка. Картинка про out of system resources что за ошибка. Фото out of system resources что за ошибка
Сергей М. © ( 2009-02-19 15:55 ) [32]

Смотрю на твой юнит fServer и не вижу ни единого обращения к форме в контексте входа в крит.секцию

В том то и прикол, что программно к форме обращений после запуска таймера нет, однако при взаимодействии состороны (в будущем оно будет, изменение настроек и т.п.) вылетает ошибка, что нехорошо.

Вот я и бъюсь с ее решением.

Вы моджете подсказать отностиельно тех же критических секций, что нужно сделать чтобы ошибка не возникала, без использования всяких try. except и т.п.? И почему они вообще возникают?
Я понимаю что дествительно тратися много ресурсов, но при Synchronize то такого не происходит, но к сожалению по ранее описанной причине его использовать не могу.

out of system resources что за ошибка. Смотреть фото out of system resources что за ошибка. Смотреть картинку out of system resources что за ошибка. Картинка про out of system resources что за ошибка. Фото out of system resources что за ошибкаout of system resources что за ошибка. Смотреть фото out of system resources что за ошибка. Смотреть картинку out of system resources что за ошибка. Картинка про out of system resources что за ошибка. Фото out of system resources что за ошибка
clickmaker © ( 2009-02-19 16:19 ) [34]

> [33] Alex22 (19.02.09 16:11)

отследи в отладчике, где именно в коде VCL вылетает EOutOfResources

out of system resources что за ошибка. Смотреть фото out of system resources что за ошибка. Смотреть картинку out of system resources что за ошибка. Картинка про out of system resources что за ошибка. Фото out of system resources что за ошибкаout of system resources что за ошибка. Смотреть фото out of system resources что за ошибка. Смотреть картинку out of system resources что за ошибка. Картинка про out of system resources что за ошибка. Фото out of system resources что за ошибка
Eraser © ( 2009-02-19 16:22 ) [35]

> [33] Alex22 (19.02.09 16:11)

ты идешь по тупиковому пути. в висте это работать не будет. там другой подход.

out of system resources что за ошибка. Смотреть фото out of system resources что за ошибка. Смотреть картинку out of system resources что за ошибка. Картинка про out of system resources что за ошибка. Фото out of system resources что за ошибкаout of system resources что за ошибка. Смотреть фото out of system resources что за ошибка. Смотреть картинку out of system resources что за ошибка. Картинка про out of system resources что за ошибка. Фото out of system resources что за ошибка
Eraser © ( 2009-02-19 16:24 ) [36]


> Eraser © (19.02.09 16:22) [35]

А какой в Висте подход?
И как тогда грамотно реализовать данную задачу?

out of system resources что за ошибка. Смотреть фото out of system resources что за ошибка. Смотреть картинку out of system resources что за ошибка. Картинка про out of system resources что за ошибка. Фото out of system resources что за ошибкаout of system resources что за ошибка. Смотреть фото out of system resources что за ошибка. Смотреть картинку out of system resources что за ошибка. Картинка про out of system resources что за ошибка. Фото out of system resources что за ошибка
Eraser © ( 2009-02-19 16:29 ) [38]

out of system resources что за ошибка. Смотреть фото out of system resources что за ошибка. Смотреть картинку out of system resources что за ошибка. Картинка про out of system resources что за ошибка. Фото out of system resources что за ошибкаout of system resources что за ошибка. Смотреть фото out of system resources что за ошибка. Смотреть картинку out of system resources что за ошибка. Картинка про out of system resources что за ошибка. Фото out of system resources что за ошибка
Сергей М. © ( 2009-02-19 16:30 ) [39]

out of system resources что за ошибка. Смотреть фото out of system resources что за ошибка. Смотреть картинку out of system resources что за ошибка. Картинка про out of system resources что за ошибка. Фото out of system resources что за ошибкаout of system resources что за ошибка. Смотреть фото out of system resources что за ошибка. Смотреть картинку out of system resources что за ошибка. Картинка про out of system resources что за ошибка. Фото out of system resources что за ошибка
clickmaker © ( 2009-02-19 16:31 ) [40]

out of system resources что за ошибка. Смотреть фото out of system resources что за ошибка. Смотреть картинку out of system resources что за ошибка. Картинка про out of system resources что за ошибка. Фото out of system resources что за ошибкаout of system resources что за ошибка. Смотреть фото out of system resources что за ошибка. Смотреть картинку out of system resources что за ошибка. Картинка про out of system resources что за ошибка. Фото out of system resources что за ошибка
Eraser © ( 2009-02-19 16:31 ) [41]

> [37] Alex22 (19.02.09 16:27)


> А какой в Висте подход?
> И как тогда грамотно реализовать данную задачу?

эт я вопросом ошибся ) если требуется сделать скриншот, то подход тот же.

out of system resources что за ошибка. Смотреть фото out of system resources что за ошибка. Смотреть картинку out of system resources что за ошибка. Картинка про out of system resources что за ошибка. Фото out of system resources что за ошибкаout of system resources что за ошибка. Смотреть фото out of system resources что за ошибка. Смотреть картинку out of system resources что за ошибка. Картинка про out of system resources что за ошибка. Фото out of system resources что за ошибка
Eraser © ( 2009-02-19 16:36 ) [42]

PS да, насчет скриншотов из сервиса. это допустимо только в XP и ранее и только в 0 терм. сессии. для остальных случаев прийдется использовать совершенно другой подход.


> Eraser © (19.02.09 16:36) [42]

А можно поподробнее, что за такой «другой» подход?

function ServiceThread(P: Pointer): integer;
begin
CriticalSection.Enter;
msgPtr:=P;

out of system resources что за ошибка. Смотреть фото out of system resources что за ошибка. Смотреть картинку out of system resources что за ошибка. Картинка про out of system resources что за ошибка. Фото out of system resources что за ошибкаout of system resources что за ошибка. Смотреть фото out of system resources что за ошибка. Смотреть картинку out of system resources что за ошибка. Картинка про out of system resources что за ошибка. Фото out of system resources что за ошибка
Сергей М. © ( 2009-02-19 17:00 ) [44]


> так и в окне Winlogon

out of system resources что за ошибка. Смотреть фото out of system resources что за ошибка. Смотреть картинку out of system resources что за ошибка. Картинка про out of system resources что за ошибка. Фото out of system resources что за ошибкаout of system resources что за ошибка. Смотреть фото out of system resources что за ошибка. Смотреть картинку out of system resources что за ошибка. Картинка про out of system resources что за ошибка. Фото out of system resources что за ошибка
Сергей М. © ( 2009-02-19 17:03 ) [45]

А ты так и не ответил, за каким лешим понадобилась эта солянка из «прямого» старта потока и старта потока через TThread-оболочку)


> Картина маслом:

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

В TThread при использовании критической секции при клике на форму либо ее перетаскивании вылезает ошибка «Out of system resources» (повторяю уже наверное в сотый раз ))).

Прямой старт: при более ресурсоемких обработках изображения (не простом сохранении, а например применении какихлибо фильтров и т.п.) опять же выскакивает «Out of system resources».

out of system resources что за ошибка. Смотреть фото out of system resources что за ошибка. Смотреть картинку out of system resources что за ошибка. Картинка про out of system resources что за ошибка. Фото out of system resources что за ошибкаout of system resources что за ошибка. Смотреть фото out of system resources что за ошибка. Смотреть картинку out of system resources что за ошибка. Картинка про out of system resources что за ошибка. Фото out of system resources что за ошибка
Сергей М. © ( 2009-02-19 20:01 ) [47]


> Не, картина будет скрыта в трее,

А, ну да, тебе ж, конечно, виднее этот самый «трей» при еще НИ ОДНОМ активном десктопе.

Хм. чет не получается простым путем, тогда несколько другой вопрос )
Есть ли возможность узнать (из-под сервиса и обычного пользователя), какой десктоп является текущим, т.е. какая сессия запущена на текущий момент?
Есть исходник определяющий момент переключения сессий, но в сервисе он не срабатывает, да и как определить сессию при запуске программы тоже непонятно, т.к. исходник отлавливает только ее переключение.
Есть какие-нибудь мысли?

out of system resources что за ошибка. Смотреть фото out of system resources что за ошибка. Смотреть картинку out of system resources что за ошибка. Картинка про out of system resources что за ошибка. Фото out of system resources что за ошибкаout of system resources что за ошибка. Смотреть фото out of system resources что за ошибка. Смотреть картинку out of system resources что за ошибка. Картинка про out of system resources что за ошибка. Фото out of system resources что за ошибка
kami © ( 2009-02-20 14:04 ) [49]

> [48] Alex22 (20.02.09 11:41)
> какая сессия запущена на текущий момент

В сервисе определяется через HandlerEx + MSDN


> [48] Alex22 (20.02.09 11:41)
> как определить сессию при запуске программы

WTSGetActiveConsoleSessionID+WTSQuerySessionInformation (afair)


> kami © (20.02.09 14:04) [49]

Спасибо! Буду пробовать.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *