Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Глюк Delphi7 / 10 сообщений из 10, страница 1 из 1
15.05.2003, 13:15
    #32160602
Петр
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глюк Delphi7
Может быть кто с этим встречался или знает из-за чего происходит, суть в следующем:
Глобальная переменная обнуляется, хотя НОЛЬ в нее никто не записывал.
Переменная объявлена в другом модуле, если объявить ее в основном модуле обнуление не происходит...

- В главной форме формирую меню (TMainMenu)
- В созданном модуле (unit globals) обявляю переменную global_var
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
unit globals;

interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
     menus;
var 
   global_var: integer;


- создаю и открываю MDI форму и записываю порядковый номер в global_var
Код: plaintext
1.
2.
3.
Application.CreateForm(TfCreateMenu, fCreateMenu);
global_var := global_var + 1 ;
fCreateMenu.Show;


После повторного открытия в global_var записывается НОЛЬ, причем в момент не использования этой переменной (замечено при трасировке)
...
Рейтинг: 0 / 0
15.05.2003, 13:22
    #32160612
eNose
Участник
[не активирован]
[не одобрен]
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глюк Delphi7
Ну вообще-то Делфи инициализирует переменные. Неважно, какая у них область видимости:
integer -> 0;
boolean -> False;
string -> '';
...
...
Рейтинг: 0 / 0
15.05.2003, 13:42
    #32160640
Петр
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глюк Delphi7
При инициализации Integer не НОЛЬ
Код: plaintext
1.
2.
3.
4.
5.
var
  k: integer;
begin
 edit1.Text:=inttostr(k);
end;

результат = 12588740
...
Рейтинг: 0 / 0
15.05.2003, 13:45
    #32160647
?пк?
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глюк Delphi7
"Ну вообще-то Делфи инициализирует переменные. Неважно, какая у них область видимости: "

Delphi инициализирует только глобальные переменные и члены данных класса
остальные - не инициализирует
...
Рейтинг: 0 / 0
15.05.2003, 14:22
    #32160690
Петр
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глюк Delphi7
ОК, но тогда получается что переменная переинициализировалась?
...
Рейтинг: 0 / 0
15.05.2003, 14:27
    #32160696
fte
fte
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глюк Delphi7
"Ну вообще-то Делфи инициализирует переменные. Неважно, какая у них область видимости:"

Не полагайтесь на Делфи. IMHO правильно будет инициализировать глобальные переменные ТОЛЬКО явным образом!
например использовать initialization секцию unit'a...
...
Рейтинг: 0 / 0
15.05.2003, 14:37
    #32160717
Петр
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глюк Delphi7
ОК попробую через initialization
...
Рейтинг: 0 / 0
15.05.2003, 15:47
    #32160851
N_Denis
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глюк Delphi7
А вообще-то я давно заметил глюк трассировщика, начиная с D6. Почему-то значения некоторых переменных неверно отображаются в режиме трассировки, хотя на самом деле все нормально.
...
Рейтинг: 0 / 0
15.05.2003, 16:02
    #32160872
Петр
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глюк Delphi7
В этом случае трассировка верна, попробовал объявить через initialization все пошло
...
Рейтинг: 0 / 0
16.05.2003, 13:48
    #32161760
SmaLL
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глюк Delphi7
Бывают глюки такого типа если включена оптимизация...
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Глюк Delphi7 / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]