IMHO.WS

IMHO.WS (http://www.imho.ws/index.php)
-   Программирование (http://www.imho.ws/forumdisplay.php?f=40)
-   -   Незащищённый код в Delphi7. (http://www.imho.ws/showthread.php?t=51145)

Sancho7 12.02.2004 17:04

Незащищённый код в Delphi7.
 
Почему 6-я делфя не орала что он незащинёный? Как его можно написать по-другому? (чтоб он стал защищённым)

RaZEr 12.02.2004 17:25

Понятие unsafe code присутствует в java и .net, а вот в Delphi ни в 6-ом ни в 7-ом я такого не припомню.

Но я думаю что само определение не меняется, т.е. под unsafe code понимаются asm-вставки, а также ссылки и указатели. Программа должна работать и так, но если это жутко критично, то можешь попробовать убрать все это.

Sancho7 13.02.2004 12:37

ежели более детально подойти к проблеме то вот на какой кусок он ругается:

TM:=timetostr(time);
for i:=Length(TM) downto 1 do
if TM[i]=':' then TM[i]:='-';

я так предполагаю что в этом коде может получиться переполнение буфера, а ты как думаешь RaZEr ?
Как бы его написать чтоб не ругался, мно просто интересно, не чтобы критично.. Хотя кто знает.
На работе я поставил разные версии этой проги на 4пни и один из них тормозит. У меня появилась гепотеза что утеска памяти из-за мое программы происходит. Но не может же утечка проявиться прям с начальной загрузки виндовса. Нет. Вот поэтому решил ругательства Делфи7 пофиксить.

RaZEr 13.02.2004 13:33

Когда ты попытаешься присвоить значение TM[i] несуществующему элементу массива, вылетит access violation. А где ты увидел переполнение буфера?

Sancho7 13.02.2004 13:53

access violation это разве не переполнение буфера? нарно я просто непрофессиональный программист
а как же тогда можно пофиксить ?

RaZEr 13.02.2004 13:55

Если нет возможности проверить длинну массива ;) , то остается только try-catch

Sancho7 13.02.2004 14:57

try-catch? А что это за зверь такой?
Как им пользоваться-то?

RaZEr 13.02.2004 14:59

Конструкция try-except

Sancho7 13.02.2004 15:21

а я пробовал таже хрень

RaZEr 13.02.2004 15:23

А что конкретно пишет компилятор? Т.е. дословно, а не вольный перевод.

Sancho7 16.02.2004 16:27

RaZEr извини что напрягал тебя. Разгадка оказалась лёгкой. Ты был прав насчёт длины массива.
Я просто проинициализировал его, назначив заранее ему длину в 254 у.е ;)


Часовой пояс GMT +4, время: 17:18.

Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.