Обсуждение программирования на 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)