Продолжу тему. Тоже считаю удобным при разработке большого модуля, скрывать уже законченные процедуры 0 уровня или вложенные. Читабельность повышается, алгоритмика более понятна.
Привожу модифицированную версию. Складки с заданной меткой открываются перед компиляцией, закрываются после, если не было ошибок (изменение DevComplier). Изменен DevDebug - чтобы перед переходом к коду из окна трэпа складки также раскрывались.
В этой версии есть минус - с точки зрения элегантности подхода. Работа со складками ведет к обширным изменениям в модели, которые отображаются во временном файле; а сворачивание/разворачивание происходит при каждой компиляции, которые обычно выполняются часто
Как вариант - разработка специального считывателя для модели, который будет использоваться во время компиляции и будет выдавать только скрытый текст из складок кода, не зависимо от их состояния. Но это требует довольно серьезной проработки...
Ivor писал(а):
Лучше не надо лазить в компилятор.
К сожалению без этого никак нельзя получить требуемую функциональность малой кровью - чтобы разворачивание/сворачивание складок работало для всех процедур компиляции.
Ivor писал(а):
Тогда написать свой модуль-обёртку над DevCompiler.
Модуль-обертку также не вот напишешь. Чтобы это сделать для каждой процедуры компиляции - придется передирать около половины DevCompiler, которая отвечает за выявление "того, что требуется компилировать".
Чтобы не наступить на грабли, использую такой подход: базовая версия Blackbox стоит отдельно. А все свои модификации Dev..., и прочий рабочий код лежит одельным профилем. И если что-то вдруг пойдет косо, достаточно удалить в профиле соотв. кодовый файл.
Кстати, прикол.
Нашел интересный концептуальный "баг". Попытка выгрузить DevDebug завершается крахом
И действительно, процедура выгрузки лежит в DevDebug, модуль "выгружает сам себя", после чего идет несколько трэпов... Т. е. DevDebug либо не должен выгружать себя, либо должен быть предусмотрен какой-то особый механизм.
Собственно сам модуль: MODULE WorkCodeFolds.
Код:
PacCoder.Decode /.5gBa1H6QW0T4yU6DY3bX9H41e1O181Q1cFn6L2IzYN0Ug:NxsU.d0.pG3kjPqNEkoB7HEtE.VK
zgVrR.sIzkGb/yHkyVSxjXImU4/gc3kXzk/Y/qy.wYrY3Zy0gY5PXWm7g6QUP26RljysJCO28Z00
162ILZga66D7.0SwY5GU3FctUGdh1VivKzOh/IjES22B2IHHBcUtcpY49O6BYHru.24J7qcFNcFS
1GFu0Mt0/Nc:EY66B.l5t1c.ro45c/qU8Qdo.zp:pOzXZa.i0V0Mc8o2Uut1V/:I.Osg6GH/2sH/
1H/0rg2JMUVW7/.9sEIVHu0YyLReybc1Fi5jEZSYQi8bcj9s4ZujGt9LXo0BtQi9Yrc2fBRYx9Xx
we:zpn6SYF13JTc.wprcCBrpbz4kj9u:i8L29oQrc05OSUPqrG2JPZNzEX5nrBaZi/LfZ4g:vW7u
7c9ZazE4/LcYRkPLLRsIOYsfC.RtlqsSPtq/3l3ydQF9eemvlGbyWj/E3SDWwjau4w3Xcw3BasPB
o:iPbzP3mPVsj.uKtV.TemhisPUe9diX5.y52zBi28Q0mr4V.pi4hrPWq4p9f6wBkcSasERuhlqR
/dBlkxx:yGIgr0YmMPWUr36ytg/HQJTPvWf.O0Tc/MMJVi3bsSHQNqsRHgj/aKr1isylqkb2ZC7l
xdWWDsyzDn6HHuyvoDLoeuGKkzHh2giKDY6EO7t0NJmRIFdK9BpKPsM:Fu5Ww4sjBwxj9ebMsvKr
PyLNltSEfnswVf04pMi0vZ3D3FttvR4NrYWJrbzWOFGM:enHVXCDO1BM.VFksBBKgTlREFREFccB
XqZ4Yhs9x3RyQ0Ib/VzPo3Yw0DvD/ijxM0T9diDWJJuzhiQR5tNJ8DJomcY:eFl7Zbfr:Su8GcnL
J75u09zMpEYL0zSy4WKMkwywkNRKeHRf9Q02g2qecQ2ttoTak3uMK3pq:XRrdcB0R9WmkShsxWCb
9bcmm2eXg.dYsrFcJ7LneWZehQGaoIu76kUw8eWX3:Zsgue9ukm2U2U2GTaWQH6rVlXaKYtOoBzp
e9MMUzLTDJ23W2fdYHwm9Q2c3QN8a9QL5pO.Gouc2dUzGJ/p1gya76YTLZqxyzLiiHV5q1ZQo0CH
KsYB6NrouG9HUUv1C57:p.lTcizVama5NjxgSdEBWvvcdDRuQn3xr4JiCXlN4fvWtXvWSyqsfV3B
QTu8wJk1hHvGbRFYCvU9XQKZl4lIdkt/orae5vXJa7bO97.XynIzvW4/XIGxxFP9dh24Ctn0ZUI1
qYoROSyfvr.cT6/UcM0PWyzBofzV8YMRHasO/ZJYxts0Kn94fMBKjSN7Eh:Z15FzCDassl89yx8y
TOIWsFr4E9b8Ntvp/5O:jp0gze4NNKF.Th:jqFUdo0wRkqvfr9Bi8DQKUj8ZSsqC3tMjPdhByLQh
de:Z5dCZi5haHr4rms7kWz8Ip7r9oR1oXHm0U8y0y9NEI1KtZ.2wTPGrxoFm/M5xiX7mIN7RdYEw
McwvKa09Jize5kTSJWs69odsXzbx6pH.iIUX7wYNTO9UaxQz0822ubcRKKfvkQqU8XV9p5BG4OM7
sraDBZLiTjJ3azdV1FuIj6JzOG0OyNbbSj:q67uuoT:M7xcQ5Sh4JCQUbzg7dQCKq/SY34nCKHrn
cm.JCl3hweg4tdL:Cf0HRoLzFU8cDHpeB:qRvJ194Ev/MUV1l3X:eS3BoK4xSwXwfeffIz9NEHOZ
XPMkSzW/ySHydqlI.B1Jr6IzulWpMoUajukPFuJD6G3KZWv3e/vHoeyXxfDhhg4N4v9ysfQr2zc9
GQwm66JZ9BbjP668rZjTJH8QlmVxQ4TQRrwsC6DfoPR66:YZHHUp:LWV/1Vt2/DhePnoaaFpyqjx
H8:BpgToBIfRwnZugO3YULjMhactmYpNm/k6J21bpb:4uFdFICz9:1gEntQBX8vjRY2FhyS2ECnk
9pDYJm6a6HGECt1868TcyKW9Y1Fl1Y1Zgw7rvKNhIvFvqipixL18OVgho:Ssx2fPZ15q6Ry.pq.:
.XgNhhShOtVcdtaBc58BDnoXtDR4l0LvwxBtcOS3Vr4LxtbloxbFviWnRj1XVljFYR44WSwYqx0j
kajjZ.54OwwncJy:e3ltcjVSD/z4jg5kZpm2NVfbYorfjgVGzdLiLPvSHD:153FaqHr5Ixjgo2Gz
NbS2agawIpdjxo9RaJOieukq36Vm9tEXr9lIrOSmKUmsfi1YPYyVxsW:p/yWhwEILKtOdkHL:qpf
Lj8ZpSioZt4iBys/xsag90GSHnf9ImnD6minbLNq9gtJqRiYnWLNoTEHjEQz6Cfgt3qRNRtGfgs1
bCRl5Cvi0MtnjQnn33wsuQsjEdnickCRxV7KmNiQmxsNdSZHlniy89jfq5nZ1nN346CRv1Y7/stq
NgHXC/OGF5YGkdP5CzDazI2nRhR7.wqxBdTSBpfRLt8SlRWGwvEclTe3ryPUyQv3NxrsBg/jl5Cu
zQaxCTvd.CX1bSjaIBQtrmavvfgKIQHy1S43.ue3n6MVl/Sr47TEIxTr4xyV48vILS4e7ofvwxBC
UqDnST3wTU9vJKywiJa9WFOzjjD2T:IroSOmDxofbLX:uwwDZYM2wX3FomPd9XrC9sBIxm3y6rbS
:lHWZ68BrktXrvfcLloSodWe/g/jsrxJfGHiz4sy77oDW7s3qDiB9dvBxkfnSqQV3jZVLdjwGbOX
thmoa59O3VZd3W1rs4u7jdzKpv4iq0Fg4jWjxNu/dFPZv8b4MfLTdtNTX4LqX1lpoD4DNY7:uNmO
bQkrP8GMY2rCU2RrkbZCXh4C4iwciL6inf.1PnjpYGiSgtyJi5Ugd8toN:NoVDw/HeydPcOpr8j1
kRPRl2bfnsQN1PSvvgmPtoSvh8sdZrr7a/EJXjtQrFvvs3PNYs5SMnagpvfjuOiQwZI8lZphtVPY
limYJ:sRIqHdhtpX1cYppT0CbhUpooiscUw6vcrv9kv3tgf847TKckk4PE3SmxYRzuYLs3r6vH.b
W7UIO/yO3FIWwzWPzYk.t.p6K62ch:FS2DLgiJQY/6iev23.jstG/rxaPkbbMxLLoZ/UWOmBi89C
XJrPLIa8XMBgfOjG:oprjxFa4r2ED7rM:9HfFywVV/.gNFCraxbiJX8XutfCFG95Ljx5S4FC1au3
X7Qqn7ootxTqsWnogNBJpPP/buXvBbUPW0TD4or27BebO.isYmOgvWBKiywqYaHcdcaDQsvWFW2m
.D8T4xlDUzkDSKmrRKiFanybK:hV7mQhbTrBqnUyejJ2qvn/BOry6nIOW/KDzp:7kicZ/GOWH/O4
cjzzs.
AtEndOfEncoding