Size: a a a

2020 December 19

AK

Alexey Kulakov in Delphi & Lazarus
YuS
Да, способов масса. :) Ну все равно считаю не должно так себя наверное вести, нет?
ты таки составил багрепорт, причем, неправильно :( вопрос только - зачем? если уже разобрались...
источник

DB

Dmitry Belkevich in Delphi & Lazarus
Андрей Т 🐎
Добрый день!  Какой компонент по советуйте для работы с СОМ портом.
Tcomport. Гуглится
источник

SB

Sergey Bodrov in Delphi & Lazarus
Eugene Krasnikov (ᴊɪɴ x)
Секции в разделяемой памяти. Когда данные являются общими для DLL, независимо от того, в каком процессе она (DLL) используется.
источник

SB

Sergey Bodrov in Delphi & Lazarus
Но потом придется как-то хендл в другие потоки передать
источник

SB

Sergey Bodrov in Delphi & Lazarus
Через mailslot или DDE например
источник

EK

Eugene Krasnikov (ᴊɪ... in Delphi & Lazarus
И как мне это поможет? Мне потом надо расшаривать указатель как-то.
Тогда уж: https://docs.microsoft.com/en-us/windows/win32/memory/creating-named-shared-memory
источник

EK

Eugene Krasnikov (ᴊɪ... in Delphi & Lazarus
Собственно, нет проблемы это реализовать как-то иначе.
Меня интересовала именно эта возможность в Delphi. Есть она или нет.
источник

SB

Sergey Bodrov in Delphi & Lazarus
Можно поискать готовые компоненты на эту тему. Стандартного ничего не припоминаю.
источник

EK

Eugene Krasnikov (ᴊɪ... in Delphi & Lazarus
Мне кажется, тут компоненты не помогут. Как компоненты поменяют структуру PE-файла? Параметры секций, создаваемых на этапе компиляции.
Можно ли создать секцию (статическую, а не расковыриванием памяти уже запущенного процесса) и указать её характеристики?
Проще уж реально Named Shared Memory юзать, тем более там ничего сложного и нет.
источник

SB

Sergey Bodrov in Delphi & Lazarus
Компонент на случай, если лень WinAPI изучать
источник

DB

Dmitry Belkevich in Delphi & Lazarus
насколько я знаю, максимум можно дефайами PE флаги менять
источник

DB

Dmitry Belkevich in Delphi & Lazarus
источник

DB

Dmitry Belkevich in Delphi & Lazarus
а так что бы отдельную секцию сделать, то из кода никак
источник

DB

Dmitry Belkevich in Delphi & Lazarus
это вообще линковщик должен делать, а не компилятор
источник

EK

Eugene Krasnikov (ᴊɪ... in Delphi & Lazarus
Я под компилятором имею в виду транслятор и линковщик вместе.
А так, да, можно DEP и ASLR управлять, типа такого

const
 IMAGE_DLLCHARACTERISTICS_DYNAMIC_BASE = $40;  // ASLR, {$DYNAMICBASE ON} in Delphi 2007+
 IMAGE_DLLCHARACTERISTICS_NX_COMPAT = $100;    // DEP
{$SetPEOptFlags IMAGE_DLLCHARACTERISTICS_DYNAMIC_BASE or IMAGE_DLLCHARACTERISTICS_NX_COMPAT} // {$SetPEOptFlags $140}, works on Delphi 6+ (and maybe earlier)
// http://qaru.site/questions/663368/how-can-i-enable-depnx-and-aslr-on-a-delphi-2006-or-earlier-executable
// https://habrahabr.ru/company/eset/blog/206244/
источник

EK

Eugene Krasnikov (ᴊɪ... in Delphi & Lazarus
Релоки стрипать.

uses Windows, SysUtils;
{$SetPEFlags IMAGE_FILE_RELOCS_STRIPPED} // {$SetPEFlags 1}, works on Delphi 2006+
// http://www.transl-gunsmoker.ru/2011/08/hack12-create-smaller-exe-files.html
источник

DB

Dmitry Belkevich in Delphi & Lazarus
угу. у меня в реальном коде в одном проекте как раз:
{$SetPEFlags IMAGE_FILE_REMOVABLE_RUN_FROM_SWAP}
падал без этого. часто с флешки запускали
источник

Y

YuS in Delphi & Lazarus
Alexey Kulakov
ты таки составил багрепорт, причем, неправильно :( вопрос только - зачем? если уже разобрались...
Да, я понял свою ошибку. Спасибо за реакцию.
источник

AK

Alexey Kulakov in Delphi & Lazarus
надо было просто отписать, что непонятый краш возникает вместо осмысленного эксепшена о переполнении стека - было б логичнее
источник

Y

YuS in Delphi & Lazarus
Я уже вторым сообщением отписал про переполнение, когда ты мне помог разобраться.
источник