Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2006.05.28;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.01 c
8-1135585258
Chaser
2005-12-26 11:20
2006.05.28
Как сделать снимок с экрана с курсором мыши?


15-1146402032
ArtemESC
2006-04-30 17:00
2006.05.28
C КПК в сеть...


1-1145362116
Дмитрий_177
2006-04-18 16:08
2006.05.28
Цветная панель


15-1146557352
SPeller
2006-05-02 12:09
2006.05.28
Размерчик :)


1-1145344069
Darvin
2006-04-18 11:07
2006.05.28
Получение картинки из ImageList для кнопки SpeedButton





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский