Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.05.28;
Скачать: CL | DM;

Вниз

Какие могут быть траблы?   Найти похожие ветки 

 
Yanis ©   (2006-04-30 22:59) [0]

Решил прочитать книгу Юрия Ревича "Нестандартные приёмы программирования на Delphi". Наткнулся на такой код:

var
 pst: PChar;
......
pst := "Hello world!!!";
Application.MessageBox(pst, "Error", MB_OK);


и следующую за ним фразу: "В данном конкретном примере, возможно, всё будет нормально, но у автора бывали случаи когда подобная конструкция вызывала исключение ("Access violation...") ... ". Мне непонятно из-за чего здесь могут быть исключения?


 
palva ©   (2006-04-30 23:09) [1]

pst содержит мусор, (если она не глобальная) Попытка записи по адресу, который равен мусору, может вызвать исключение.


 
Yanis ©   (2006-04-30 23:14) [2]

Хм... С одной стороны автор гооворит, что переменная равна nil, но всё же могут быть и AV. Странно... Чуть ранее сказано:

"На самом деле все переменные в Delphi по умолчанию вроде бы и так инициализируются нулевыми значениями, но с идеологической точки зрения было бы категорически неправильно опустить этот момент...."


 
geserx   (2006-04-30 23:17) [3]

Не зря ещё со времен Васика умные книжки всегда учили предварительно инициализировать переменные... и мы все это делаем. например, взять ту же сумму элементов массива=)))

s:=0;
// но ведь s объявлена, и вней ничё нет вроде как!!!

for i:=1 to....


 
palva ©   (2006-04-30 23:19) [4]

Если переменная глобальная то PChar инициализируется nil, но в этом случае AV случится обязательно.
Если переменная локальная, то она не инициализируется, если явно не проинициализирована программистом.


 
Yanis ©   (2006-04-30 23:19) [5]

Можно ли точно утверждать что локальные переменные всегда имеют "нулевое" значение?


 
Yanis ©   (2006-04-30 23:20) [6]

т.е глобальные?


 
GeserX   (2006-04-30 23:25) [7]

Почитай вот лучше "Дельфи глазами хакера" и не *** людям мозгом ПЧаром и прочими=)


 
Vendict ©   (2006-04-30 23:30) [8]

Yanis ©   (30.04.06 23:19) [5]
Можно ли точно утверждать что локальные переменные всегда имеют "нулевое" значение?

Yanis ©   (30.04.06 23:20) [6]
т.е глобальные?


локальные всегда содержат мусор. а глобальные ДОЛЖНЫ иницилизоваться сами, но бережёного Бог бережёт. Лучше самому.


 
Yanis ©   (2006-04-30 23:35) [9]

Вообще то я всегда принудительно инициализирую переменные, неважно глобальные или локальные, но просто стало интересно. Всем спасибо.

P. S. Delphi глазами хакера отсавляю вам на растерзание :)


 
McSimm ©   (2006-04-30 23:44) [10]

Вообще не пойму о чем речь...

> pst := "Hello world!!!";

что это, если не инициализация переменной адресом строковой константы?

или вы полагаете, что содержимое константы будет копироваться по адресу, содержащемуся в данный момент в pst ?


 
VirEx ©   (2006-04-30 23:49) [11]


>  [7] GeserX   (30.04.06 23:25)
> Почитай вот лучше "Дельфи глазами хакера" и не *** людям
> мозгом ПЧаром и прочими=)

гесер хэ, да ты просто хакер, если прочитал эту статью! вау! оказывается вот оно что - нужно всего-то зайти на хакер ру и почитать вумные статейки.
один ты просветлённый, а остальные на мастаках - ...?
"а мужики то не знают" (с)


 
Юрий Зотов ©   (2006-05-01 00:02) [12]

> Yanis ©   (30.04.06 23:19) [5]

Все глобальные переменные и все поля всех объектов по умолчанию инициализируются нулями.

"По умолчанию" - это значит, что у объекта можно перекрыть InitInstance, а переменной можно явно задать начальное значение. Тогда будет не по умолчанию, а так, как написано.


 
palva ©   (2006-05-01 00:17) [13]

> или вы полагаете, что содержимое константы будет копироваться по адресу
Ой, я в самом деле так полагал. Был неправ. Не будет здесь AV. В любом случае не будет.


 
homm ©   (2006-05-01 00:23) [14]


>  [11] VirEx ©   (30.04.06 23:49)

"Дельфи глазами хакера" это книга, так что ты не прав.


 
Yanis ©   (2006-05-01 00:40) [15]


> "Дельфи глазами хакера" это книга, так что ты не прав.

Статьи и то грамотнее )


 
VirEx ©   (2006-05-01 01:23) [16]


>  [14] homm ©   (01.05.06 00:23)
>
> >  [11] VirEx ©   (30.04.06 23:49)
>
> "Дельфи глазами хакера" это книга, так что ты не прав.

на моей памяти, три статьи с таким же названием видел


>  [15] Yanis ©   (01.05.06 00:40)
>
> > "Дельфи глазами хакера" это книга, так что ты не прав.
>
> Статьи и то грамотнее )

угу)


 
Yanis ©   (2006-05-01 01:32) [17]

http://www.bhv.ru/img/news/photo.html



Страницы: 1 вся ветка

Текущий архив: 2006.05.28;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.029 c
2-1147154902
Sergey Masloff
2006-05-09 10:08
2006.05.28
Проблема с кодировками. Написал плагин к Outlook но сабж...


15-1146299596
CKaHK
2006-04-29 12:33
2006.05.28
socks 5 server


2-1147260862
daimyo
2006-05-10 15:34
2006.05.28
DBMS_SQL


15-1146423413
ArtemESC
2006-04-30 22:56
2006.05.28
Химическая прожка...


2-1147463627
Mr tray
2006-05-12 23:53
2006.05.28
lparam в KeyboardProc