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

для защиты Windows приложений

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

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


Отладка

From: "Alexey Cherepanov" <alexey [@] soft5.com>



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" <anatoly [@] podgoretsky.com>


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" <anatoly [@] podgoretsky.com>


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" <alexey [@] soft5.com>



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

SA> From: "Slava Antonov" <deadbeef [@] so.yandex.ru>


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" <alexey [@] soft5.com>



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" <anatoly [@] podgoretsky.com>


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)