![]() |
Незащищённый код в Delphi7.
Почему 6-я делфя не орала что он незащинёный? Как его можно написать по-другому? (чтоб он стал защищённым)
|
Понятие unsafe code присутствует в java и .net, а вот в Delphi ни в 6-ом ни в 7-ом я такого не припомню.
Но я думаю что само определение не меняется, т.е. под unsafe code понимаются asm-вставки, а также ссылки и указатели. Программа должна работать и так, но если это жутко критично, то можешь попробовать убрать все это. |
ежели более детально подойти к проблеме то вот на какой кусок он ругается:
TM:=timetostr(time); for i:=Length(TM) downto 1 do if TM[i]=':' then TM[i]:='-'; я так предполагаю что в этом коде может получиться переполнение буфера, а ты как думаешь RaZEr ? Как бы его написать чтоб не ругался, мно просто интересно, не чтобы критично.. Хотя кто знает. На работе я поставил разные версии этой проги на 4пни и один из них тормозит. У меня появилась гепотеза что утеска памяти из-за мое программы происходит. Но не может же утечка проявиться прям с начальной загрузки виндовса. Нет. Вот поэтому решил ругательства Делфи7 пофиксить. |
Когда ты попытаешься присвоить значение TM[i] несуществующему элементу массива, вылетит access violation. А где ты увидел переполнение буфера?
|
access violation это разве не переполнение буфера? нарно я просто непрофессиональный программист
а как же тогда можно пофиксить ? |
Если нет возможности проверить длинну массива ;) , то остается только try-catch
|
try-catch? А что это за зверь такой?
Как им пользоваться-то? |
Конструкция try-except
|
а я пробовал таже хрень
|
А что конкретно пишет компилятор? Т.е. дословно, а не вольный перевод.
|
RaZEr извини что напрягал тебя. Разгадка оказалась лёгкой. Ты был прав насчёт длины массива.
Я просто проинициализировал его, назначив заранее ему длину в 254 у.е ;) |
| Часовой пояс GMT +4, время: 17:18. |
Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.