|
7 / 7 / 0
Регистрация: 03.10.2014
Сообщений: 313
|
||||||
Зависает Picture.Create(fname: string)15.10.2020, 20:26. Показов 1025. Ответов 11
Метки нет (Все метки)
Если Picture.Create(fname: string) попробовать открыть файл который злоумышленно испорчен, например взять файл .exe и изменить его разрешение на .png, то "функция" начинает удерживать файл не давая его открыть/стереть/etc.
Мне нужно удалить такой файл прямо из программы. Следующего вида конструкция не работает.
0
|
||||||
| 15.10.2020, 20:26 | |
|
Ответы с готовыми решениями:
11
SET FName = @FName (Собачка) string, create, checked |
|
2355 / 1458 / 526
Регистрация: 07.04.2017
Сообщений: 4,798
|
|
| 15.10.2020, 20:31 | |
|
Сразу говорите какой модуль, графических модулей + библиотек много.
0
|
|
|
7 / 7 / 0
Регистрация: 03.10.2014
Сообщений: 313
|
|||||||
| 15.10.2020, 20:52 [ТС] | |||||||
|
Добавлено через 1 минуту
0
|
|||||||
|
2355 / 1458 / 526
Регистрация: 07.04.2017
Сообщений: 4,798
|
|
| 15.10.2020, 21:48 | |
GraphABC не поддерживается, ему на замену давно пришёл GraphWPF. Поэтому в нём это уже не исправят.В GraphWPF это тоже сейчас не работает, но насчёт него можно сделать баг репорт, вот такой:https://github.com/pascalabcne... ssues/2325
0
|
|
|
7 / 7 / 0
Регистрация: 03.10.2014
Сообщений: 313
|
|||||||
| 15.10.2020, 22:01 [ТС] | |||||||
но даже если работать с графическим окном, то как вы верно заметили, данный баг присутствует и в этом модуле. Причем какого то способа его избежать предварительными проверками я не нашел.
0
|
|||||||
|
2355 / 1458 / 526
Регистрация: 07.04.2017
Сообщений: 4,798
|
|
| 15.10.2020, 22:33 | |
|
А для чего вам картинка? Если загружать не в графическое окно - надо и использовать не графические модули.
0
|
|
|
7 / 7 / 0
Регистрация: 03.10.2014
Сообщений: 313
|
|
| 16.10.2020, 00:27 [ТС] | |
|
Вот не поверите, но мне картинка на экране совершенно не нужна. =)
А нужна она "демон процессу" - который скачивает картинку в теневой буфер, обрабатывает как мне необходимо и сохраняет на диск. При этом я пользуюсь встроенными функциями рисования графических примитивов, масштабированием, попиксельной обработкой и другими плюшками, которые дает графический пакет. Только рисую не в окне, что к слову сказать еще и дополнительное время отъедает, а в "теневом буфере". При этом мне совершенно не требуется открывать картинку на экране, более того, мне это даже вредно. Конечно можно включить для графического окна директиву LockDrawing... но лучше бы разработчики дали возможность скрывать Графическое окно, а лучше открывать его отдельной директивой. Офтоп. Как по мне, разработчики PascalABC слишком сильно "заориентировальсь" на то, что это пакет для обучения. Создав действительно замечательный с точки зрения сохранения Паскалевской структуры программы и типизирования данных компилятор - местами он меня просто изумляет и восхищает - тем не менее, очень мало внимания уделяют тому, что на нем можно не только обучаться, но и писать вполне себе масштабные (и даже коммерческие) проекты. Сильно не хватает нормального Хелпа с нормальными примерами - ей богу, иногда хочется больно треснуть человека, который отвечает за Хелп =) Не хватает возможности одновременно открыть две Оболочки - одну с основным проектом и параллельно еще одну для микротестирования простого кода. Беда с сохранением нескольких версий проекта. Точнее вообще ЖОПА, т.к сделать это из-под оболочки вообще никак не выходит. Ну и еще кучка детских болезней, о которых можно говорить вечно. И все же, как представитель ольдскульной школы программирования, я ужасно рад, что есть этот проект и что его продолжают поддерживать и обновлять.
0
|
|
|
2355 / 1458 / 526
Регистрация: 07.04.2017
Сообщений: 4,798
|
|||||||||||||||||||||
| 16.10.2020, 08:32 | |||||||||||||||||||||
|
Не привыкайте - для каждой задачи надо знать несколько полностью различных инструментов, чтоб нормально её выполнять. Графические модули, как я и сказал - заточены под графику в графическом окне. То что в GraphABC можно было рисовать и на внутренних объектах картинки, это только приятный бонус. В графическом окне от него проку мало, наверное поэтому в GraphWPF такого всё ещё нет.А изображения можно редактировать вообще не создавая окно, к примеру так:
Я сам использую git + поверх него TortoiseGit, чтоб не лезть в консоль для всего. И - вы уже заметили .Net в конце имени этого языка? А точнее справку по этому .Net: https://docs.microsoft.com/en-... mework-4.8 Кстати, если вы поставите курсор на любое имя и нажмёте F1 - вам откроет страницу справки для этого имени. Если имя из .Net - справку откроет тоже от .Net'а. Если вы хотите это изменить - вы всегда можете отредактировать Исходных код IDE (редактора) и прислать предложение с вашими изменениями в виде pull request'а. Только приготовьтесь подробно и более-менее официально объяснить что вы изменили и почему вы считаете эти изменения необходимыми. Добавлено через 7 минут А, да, и собственно обработка открытия неправильного файла картинки:
Bitmap принимающий строку тоже открывает System.IO.Stream. Но у него str.Close не находится в finally, поэтому при ошибке в чтении потока - поток закроется только при следующей сборке мусора, когда среда выполнения обнаружит что файл оставили открытым, но нигде его уже не используют.
1
|
|||||||||||||||||||||
|
7 / 7 / 0
Регистрация: 03.10.2014
Сообщений: 313
|
||||||||||||||||
| 16.10.2020, 18:13 [ТС] | ||||||||||||||||
|
Спасибо за наводку на System. Жаль, что она совершенно не описана в Хелпе.
Как сделать Хелп лучше - прежде всего ввести в него перекрестные ссылки из разделов и более подробные примеры, иначе мы видим: procedure CopyRect(dst: System.Drawing.Rectangle; p: Picture; src: System.Drawing.Rectangle); Копирует прямоугольник src рисунка p в прямоугольник dst текущего рисунка Без примера и ссылки на System.Drawing.Rectangle проще один раз загуглить и увидев код в три строки все понять. Отсюда вопрос - если в Хелпе ничего не понятно, зачем нужен такой Хелп? Или вот пример - статья for to. Во всей статье даны примеры только по использованию циклов вида:
Нужны более широко описывающие суть примеры. Или вот отрывок статьи: "С помощью операции new - в стиле C# (предпочтительный). var p: Person; p := new Person('Иванов',20); Деструктор в Object Pascal - специальная процедура, уничтожающая объект и освобождающая динамическую память, которую этот объект занимал. При описании деструктора вместо служебного слова procedure используется служебное слово destructor. Например:
Из нее можно сделать следующий вывод: "Чтобы испечь хлеб, нужно испечь хлеб! Но желательно делать это как делают китайцы в провинции Си-шарп. Посмотрите наш замечательный рецепт:
0
|
||||||||||||||||
|
2355 / 1458 / 526
Регистрация: 07.04.2017
Сообщений: 4,798
|
||
| 16.10.2020, 19:36 | ||
|
Ссыль что я вам скинул - и есть справка. И её так уже открывает кнопка хелпа, то есть F1. Ещё раз, есть паскаль, а если платформа поверх которой он написан - .Net . То есть данный паскаль включает в себя огромные возможности платформы. Даже если было бы реально переписать их в справку паскаля - в этом нет смысла, потому что все эти вещи уже и так описаны. --- Насчёт справки - её исходники находятся в папке рядом с папкой IDE: https://github.com/pascalabcne... ABCNetHelp То что вы говорите - выглядит по делу, но всё ещё только придирки, без конкретных примеров исправления. Лучше всего если вы попробуете в локальной копии репозитория по разному перефразировать и затем пришлёте в качестве пулл-реквеста список предложений.
0
|
||
|
7 / 7 / 0
Регистрация: 03.10.2014
Сообщений: 313
|
||
| 17.10.2020, 00:31 [ТС] | ||
|
Переписать их на PascalABC.NET не так то и просто. Более того, из них совершенно не понятен синтаксис применимый к PascalABC и взаимосвязь .NET с объектной моделью PascalABC, а проблемы и ошибки обычно именно в этом. Что толку, в том, что пользователь PascalABC.NET видит пример на неведомом ему языке программирования, ориентированный на Сишную объектную модель и очень специфические описания и использование типов, да еще с комментариями на английском? Тут уж проще выучить С++ и не заморачиваться =)
0
|
||
|
2355 / 1458 / 526
Регистрация: 07.04.2017
Сообщений: 4,798
|
|||
| 17.10.2020, 07:47 | |||
:=, а в C# =).А C++ это совершенно другой язык, у него из общего с C# только базовый синтаксис (как то что блоки кода пишуться в { } ).Справка по .Net вообще то переведена на русский, там есть кнопка переключения. Но я ни в коем случае не буду рекомендовать этот перевод.
0
|
|||
| 17.10.2020, 07:47 | |
|
Помогаю со студенческими работами здесь
12
Можно ли динамически создавать Picture Box внутри другого Picture Box?
Вписать один Picture control в другой Picture Control на MFC C++
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
|
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога
Финальные проекты на Си и на C++:
hello-sdl3-c. zip
hello-sdl3-cpp. zip
Результат:
|
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога
MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
|
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд.
Даже если у вас. . .
|
|
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает
монорепозиторий в котором находятся все исходники.
При создании нового решения, мы просто добавляем нужные проекты
и имеем. . .
|
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение:
В этой книге («Подход, основанный на вариантах использования») Ивар утверждает,
что архитектура программного обеспечения — это
структуры,. . .
|
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога
Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
|
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip
На первой гифке отладочные линии отключены, а на второй включены:. . .
|