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

Вниз

Инициализация глобальных переменных   Найти похожие ветки 

 
Alex_C   (2010-03-28 12:09) [0]

Я всегда считал, что в дельфи глобальные переменные по умолчанию инициализируются как nil. Что в общем так оно и есть.
Однако сталкнулся с такой проблемой: если запускать мою программу под Линуксом в Wine это не так.
Есть некоторый класс TMyClass - наследник от TThread. Это отдельная нить работы с интернетом. Запускается пользователем по нажатию на кнопку. Перед нажатием я проверяю, не инициализированна ли переменная MyClass:
if not Assigned(MyClass)...
так вот - под виндой все нормально работает, а под Wine при первой же проверке Assigned говорит что переменная уже инициализирована. Выход из положения конечно простой, самому инициализировать переменную


var
  MyClass: TMyClass = nil;


но я считал что Дельфи это по умолчанию сама делает. Или я ошибаюсь?


 
Игорь Шевченко ©   (2010-03-28 14:04) [1]

"Global variables that don"t have an explicit initializer are allocated in the BSS section in the executable. They don"t actually take up any space in the EXE; the BSS section is a special section that the OS allocates and clears to zero. "

Загрузчик в Wine вполне может не обнулять содержимое сегмента BSS


 
Alex_C   (2010-03-30 09:50) [2]

Большое спасибо! Теперь все стало ясно!


 
KSergey ©   (2010-03-31 11:52) [3]

казалось бы, такое мелкое различие...



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

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

Наверх




Память: 0.45 MB
Время: 0.068 c
15-1270088434
Думкин
2010-04-01 06:20
2010.08.27
Математиков - с Днем!


15-1264861183
Делфиец
2010-01-30 17:19
2010.08.27
Физическое чтение диска


15-1270049066
Чайник
2010-03-31 19:24
2010.08.27
Сколько на самом деле человек вКонтакте?


2-1270824697
aalleexxaa
2010-04-09 18:51
2010.08.27
записать все содержимое базы данных Access в массивы


2-1267530370
Fr
2010-03-02 14:46
2010.08.27
компоненты в run-time





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский