Техническая поддержка :

Современные решения

для защиты Windows программ

и восстановления исходного кода

Обсуждение программирования на Delphi в конференции ru.delphi


Отладка

From: "Alexey Cherepanov"


Wed Jul 13 2005 18:54, Anatoly Podgoretsky wrote to Alexey Cherepanov:


AP> Hello, Alexey Cherepanov!
AP> You wrote to Slava Antonov on Wed, 13 Jul 2005 09:47:42 +0000 (UTC):

??>>>>> Ваш же пример некорректен, т.к. глобальные
??>>>>> переменные всегда инициализированы.
??>>>> Да? И позвольте узнать, кто же их инициализирует?

SA>>> Компилятор.

AC>> Оо,я отстал от жизни, пример привести можешь?

AP> Очень отстал, а религия не позволяет взглянуть в сопроводительную
AP> документацию, для этого достаточно нажать F1. Стоит ли утруждать этим
AP> конференцию?

AP> If you don't explicitly initialize a global variable, the compiler
AP> initializes it to 0.

Це про обычные переменные, я думал речь идет о том, что компилятор создает
обьекты...

* Origin: FidoNet Online - www.fido-online.com (2:5020/400)


Отладка

From: "Anatoly Podgoretsky"

Hello, Slava Antonov!
You wrote to Anatoly Podgoretsky on Wed, 13 Jul 2005 20:24:43 +0400:

??>> If you don't explicitly initialize a global variable, the compiler
??>> initializes
??>> it to 0.

SA> Анатолий, а как дело обстоит с массивами? Как я понял место под них в
SA> экзешнике не резервируется.


Естественно надо смотреть код, разбиение на секции инициализированых и неициализированых данных. Последнии хранить не требуется и они могут быть инициализированый парой ассемблерных команд.
Вот только изучать это как то не охота, достаточно доверять написаному.

--
С уважением,
Анатолий Подгорецкий

* Origin: Demos online service (2:5020/400)


Отладка

From: "Anatoly Podgoretsky"

Hello, Alexey Cherepanov!
You wrote to Anatoly Podgoretsky on Wed, 13 Jul 2005 15:51:19 +0000 (UTC):

??>>>>>> Ваш же пример некорректен, т.к. глобальные
^^^^^^^^^^
??>>>>>> переменные всегда инициализированы.
^^^^^^^^^^
??>>>>> Да? И позвольте узнать, кто же их инициализирует?

SA>>>> Компилятор.

AC>>> Оо,я отстал от жизни, пример привести можешь?

AP>> Очень отстал, а религия не позволяет взглянуть в сопроводительную
AP>> документацию, для этого достаточно нажать F1. Стоит ли утруждать этим
AP>> конференцию?

AP>> If you don't explicitly initialize a global variable, the compiler
AP>> initializes it to 0.

AC> Це про обычные переменные, я думал речь идет о том, что компилятор создает
обьекты...

Я выделил вопрос в верху.

С объектами еще проще они всегда инициализируются нулями в момент создания.

ЗЫ: маленькая просьба отделять приветствие и подпись пустыми строками, твои же сообщения не имеют подписи и последний абзац отбрасывается почтовиком как подпись, приходится потом его копировать из исходного сообщения. Это очень не удобно подписчикам. Это так просьбо, но тоже самое регламентировано правилами конференции.

--
С уважением,
Анатолий Подгорецкий

* Origin: Demos online service (2:5020/400)


Re: Глобальные переменные (was: Отладка)

From: "Alexey Cherepanov"


Wed Jul 13 2005 21:22, Slava Antonov wrote to Alexey Cherepanov:

SA> From: "Slava Antonov"

SA> Hello Alexey Cherepanov, you wrote:

>>> Компилятор.
>> Оо,я отстал от жизни, пример привести можешь?

SA> var
SA> V: array[0..5] of Char = ('0', '1', '0', '2', '0', '3');
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
SA> Данный массив будет в самом EXE, а при загрузке программы он просто
SA> спроецируется в память.
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Это ты к чему написал? Тут же явная инициализация?


SA> var
SA> I: Integer;
SA> В экзешнике соотвествующее место будет забито нулями.

Очень конечно интересно, только я предпочитаю инициализировать переменные
явно( ноль очень часто признак не инициализированности).






* Origin: FidoNet Online - www.fido-online.com (2:5020/400)


Отладка

From: "Alexey Cherepanov"


Wed Jul 13 2005 20:05, Anatoly Podgoretsky wrote to Alexey Cherepanov:

??>>>>>>> Ваш же пример некорректен, т.к. глобальные

AP> ^^^^^^^^^^

??>>>>>>> переменные всегда инициализированы.

AP> ^^^^^^^^^^

??>>>>>> Да? И позвольте узнать, кто же их инициализирует?

SA>>>>> Компилятор.

AC>>>> Оо,я отстал от жизни, пример привести можешь?

AP>>> Очень отстал, а религия не позволяет взглянуть в сопроводительную
AP>>> документацию, для этого достаточно нажать F1. Стоит ли утруждать этим
AP>>> конференцию?

AP>>> If you don't explicitly initialize a global variable, the compiler
AP>>> initializes it to 0.

AC>> Це про обычные переменные, я думал речь идет о том, что компилятор
AC>> создает

AP> обьекты...

AP> Я выделил вопрос в верху.

AP> С объектами еще проще они всегда инициализируются нулями в момент
AP> создания.

Я немного не то имел в виду:

Присвоение nil переменой обьектного типа инициализирует переменную но не
обьект. Вот в С++ я описал глобальную переменную

CFoo foo;

и переменная и обьект у меня инициализирован (конструкторы отработали) :)

А в дельфи при таком же обьявлении

foo:TFoo;

foo примет предопределенное значение, говорящие о том что обьект *возможно* не
инициализирован.

Alexey

* Origin: FidoNet Online - www.fido-online.com (2:5020/400)


Отладка

From: "Anatoly Podgoretsky"

Hello, Alexey Cherepanov!
You wrote to Anatoly Podgoretsky on Wed, 13 Jul 2005 16:37:45 +0000 (UTC):

AP>> С объектами еще проще они всегда инициализируются нулями в момент
AP>> создания.

AC> Я немного не то имел в виду:

AC> Присвоение nil переменой обьектного типа инициализирует переменную но
AC> не обьект. Вот в С++ я описал глобальную переменную

AC> CFoo foo;

AC> и переменная и обьект у меня инициализирован (конструкторы отработали)
AC> :)

AC> А в дельфи при таком же обьявлении

AC> foo:TFoo;

AC> foo примет предопределенное значение, говорящие о том что обьект
AC> *возможно* не инициализирован.

Переменная будет инициализирована в сответствии глобальная или нет. Объект будет инициализирован всегда - в момент создания его конструктором.
Hеопределенности нет.

--
С уважением,
Анатолий Подгорецкий

* Origin: Demos online service (2:5020/400)


Re: Excel, COM, etc.

Hi, Alexey!
В чреве акулы, пойманной 13 Jul 05 01:46:38,
дети капитана Гранта нашли письмо на тему 'Re[2]: Excel, COM, etc.':

AS> 1. У меня есть строка Лист1!B9:H20;Лист2!A14:E20
AS> Её нужно перевести в одномерный массив данных.
AS> Какой функцией переводить?

Range[...].Value

AS> 2. У меня есть строка Лист1!B9:H20
AS> Её нужно перевести в двухмерный массив данных.
AS> Какой функцией переводить?

Range[...].Value

= Иконку в system tray (где часы) вставляют функцией Shell_NotifyIcon =

Bye ...
Tolik Tentser
tolik [@] katren.ru
ICQ 15925834

* Origin: NNTP point at Nuuzerpogodi station (2:5000/292.17)


Re: Отладка

Hi, Alexey!
В чреве акулы, пойманной 13 Jul 05 12:47:42,
дети капитана Гранта нашли письмо на тему 'Re:Отладка':

AC> Оо,я отстал от жизни, пример привести можешь?

=== TFM begin ====

If you don't explicitly initialize a global variable, the compiler
initializes it to 0. Local variables, in contrast, cannot be initialized in
their declarations and their contents are undefined until a value is
assigned to them.

=== TGM end ===


= Иконку в system tray (где часы) вставляют функцией Shell_NotifyIcon =

Bye ...
Tolik Tentser
tolik [@] katren.ru
ICQ 15925834

* Origin: NNTP point at Nuuzerpogodi station (2:5000/292.17)


Глобальные пеpеменные (was: Отладка)

Привет, Slava!



SA> Однако мне вот что интеpесно. Если объявить массив на миллион
SA> элементов. То в экзешнике он не хpанится. Hо пpи загpyзке все pавно
SA> бyдет забит нyлями.

Если размер секции данных в PE-файле меньше ее фактического размера, оставшуюся часть ОС инициализирует нулями (что разумно в том числе и по соображениям безопасности -- ни к чему показывать чужой мусор). Посему твой массив-миллионник повлияет на фактический размер секции данных в памяти, но в данные PE-файла не войдет за ненадобностью -- инициализацию нулем сделают автоматически.

WBR, Eugene mailto: www.tld.by [@] gmail*com

* Origin: Угрюмая пора... глаза бы не глядели (2:450/118.24)


Отладка

Привет, Slava!



>> If you don't explicitly initialize a global variable, the compiler
>> initializes it to 0.
SA> Анатолий, а как дело обстоит с массивами? Как я понял место под них в
SA> экзешнике не pезеpвиpyется.

Смотря что понимать под резервированием. В адресном пространстве секций место под них зарезервировано. А вот физически в PE-файле неинициализированных данных может не быть за ненадобностью. Это в самых общих чертах. Подробнее читать у т.Рихтера и в MSDN.

WBR, Eugene mailto: www.tld.by [@] gmail*com

* Origin: От последнего ориджина, у меня осталось вот это <- (2:450/118.24)



Назад Содержание Вперед




Главная     Программы     Статьи     Разное     Форум     Контакты