![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
||||
|
||||
|
Случайно столкнулся с такой ситуацией
Код:
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
i:integer;
Begin
ShowMessage(IntToStr (i));
end;
end. |
|
#2
|
||||
|
||||
|
Потому что переменная неинициализирована.
|
|
#3
|
||||
|
||||
|
присвойте переменной i любой численное значение переде ее выводом, а вообще не обходимо всегда задовать значения описанным выше переменным в секции var ! Потому что отладчик при выполнение обращаеться к переменный i в память где она выделенна но там нет значения, и на то место куда она обращаеться прописанны случайные значения ( не всегда )... вот их Вы и получаете... , и не дай бог Вы не присвоете значения объекту... то сразу получете ACCESS VIOLATION
![]() |
|
#4
|
||||
|
||||
|
А когда объявляешь переменную как глобальную а потом выводишь то получается '0' -Нормально. Почему здесь так а там так.
|
|
#5
|
|||
|
|||
|
Переменные надо инициализировать всегда. Нельзя полагаться на компилятор и надеяться что он присвоит переменной 0 даже если она глобальная. Особенно если она глобальная.
|
|
#6
|
||||
|
||||
|
А как простые переменные инициализировать.
У переменных типа объект есть метод Create а тут...? |
|
#7
|
||||
|
||||
|
Код:
... var i : integer = 65535; ... |
|
#8
|
||||
|
||||
|
балин, а просто перед первым использованием прописать
Код:
var i:integer; begin i:=0; ... ... end; |
|
#9
|
||||
|
||||
|
Точняк !!!
![]() |
|
#10
|
||||
|
||||
|
Это не наш путь - слишком просто. Лучше для каждой переменной написать функцию инициализатор.
![]() Код:
Var
i: Integer;
procedure I_Init;
begin
i := 0;
end;
begin
I_Init;
end. |