|  | 
 
 | 
| 
 | |||||||
| Регистрация | << Правила форума >> | 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. |