GrayFace 
 
 
		
		
		
			
			
 
 
			
 
 
			
Posts: 1233 
	
		
	 | 
	
		
			
			 
			
				Тогда возвращаю. А GoTo теперь вот такое   
Code: 
 !?FU255; 
!!VRy1:S100; 
!!la0:;  [label 0] 
!!if&y1>0:; 
  (...) 
  !!VRy1:-1; 
  !!go0:;  [goto label 0] 
!!en:;
  
[edit] Все, теперь y-1...y-100, e-1..e-100 снова зануляются. А y1..y100 и e1..e100 в любом случае занулялись при вызове.
			  
			
			
  
Вся правда обо мне
			
		 |  
	 
 | 
	| 15.09.2010 20:58 | 
	
		
	 | 
	
		
		Sav 
 
 
		
		
		
			
			
			 
			
Posts: 2180 
	
		
	 | 
	
		
			
			 
			
				А не будет циклов без вызова функции?
			 
			
			
			
		 |  
	 
 | 
	| 15.09.2010 21:57 | 
	
		
	 | 
	
		
		feanor 
 
 
		
		
		
			
			
			 
			
Posts: 624 
	
		
	 | 
	
		
			
			 
			
				Собственно,  конструкция типа 
Code: 
 !!la0:; 
........ 
!!if&y16<>0:; 
!!go0:; 
!!el:; 
!!en:;
  
и есть готовый do-while. Впрочем, я подозреваю, что её можно сократить до !!la0:; .... !!go0&y16<>0:; ?
			  
			
			
			
		 |  
	 
 | 
	| 16.09.2010 01:02 | 
	
		
	 | 
	
		
		hippocamus 
 
 
		
		
		
			
			
			
 
 
			
Posts: 517 
	
		
	 | 
	
		
			
			 
			
				 (13.09.2010 01:22)etoprostoya Wrote:  в большинство серьёзных модов и карт-модов уже не возможно будет поиграть, так как там часто используются переменные, которые изначально предполагаются равными нулю. 
Нормальные программисты не станут использовать неинициализированную переменную хотя бы чтобы просто перестраховаться на всякий случай.
			  
			
			
  
-= подпись Гиппокамуса =-
			
		 |  
	 
 | 
	| 16.09.2010 02:11 | 
	
		
	 | 
	
		
		Sav 
 
 
		
		
		
			
			
			 
			
Posts: 2180 
	
		
	 | 
	
		
			
			 
			
				Quote:Собственно, конструкция типа... 
Это я понимаю, я имею ввиду "высокоуровневый" цикл без функции.
			  
			
			
			
		 |  
	 
 | 
	| 16.09.2010 09:35 | 
	
		
	 | 
	
		
		GrayFace 
 
 
		
		
		
			
			
 
 
			
 
 
			
Posts: 1233 
	
		
	 | 
	
		
			
			 
			
				Высокоуровневого нет. 
 (16.09.2010 01:02)feanor Wrote:  Впрочем, я подозреваю, что её можно сократить до !!la0:; .... !!go0&y16<>0:; ? 
да
  (16.09.2010 02:11)hippocamus Wrote:  Нормальные программисты не станут использовать неинициализированную переменную хотя бы чтобы просто перестраховаться на всякий случай. 
Если про инициализацию нулями четко оговорено в справке, то будут. Тут я сомниваюсь, что про обнуление этих переменных есть в справке. Во всяком случае, точно без подробностей.
			  
			
			
  
Вся правда обо мне
			
		 |  
	 
 | 
	| 16.09.2010 12:13 | 
	
		
	 | 
	
		
		etoprostoya 
 
 
		
		
		
			
			
			 
			
Posts: 1809 
	
		
	 | 
	
		
			
			 
			
				 (16.09.2010 12:13)GrayFace Wrote:  Если про инициализацию нулями четко оговорено в справке, то будут. Тут я сомниваюсь, что про обнуление этих переменных есть в справке. Во всяком случае, точно без подробностей. 
ERM-Help Wrote:Инициализация переменных 
 
Как и флаги, все переменные в начале игры имеют значение 0. Однако, как и флаги, некоторые переменные не будут сброшены между картами без перезапуска самой игры. Опять же, это может помочь вам в создании кампаний. 
 
Когда вы начинаете игру, следующие переменные будут установлены на 0 или примут пустое значение "" (для z-переменных): f...t, v1...v500, v1001-v10000, z1...z300, z501-z1000, w1-w50. 
 
Следующие переменные будут сохранять свое текущее значение между играми (только если вы не перезапустите игру): v501-v1000, z301-z500, w51-w200. 
			 
			
			
			
		 |  
	 
 | 
	| 16.09.2010 17:44 | 
	
		
	 | 
	
		
		Berserker 
 
 
		
		
		
			
			
 
 
			
 
 
			
Posts: 16788 
	
		
	 | 
	
		
 | 
	| 16.09.2010 22:41 | 
	
		
	 | 
	
		
		GrayFace 
 
 
		
		
		
			
			
 
 
			
 
 
			
Posts: 1233 
	
		
	 | 
	
		
			
			 
			
				 (16.09.2010 17:44)etoprostoya Wrote:  ERM-Help Wrote:Инициализация переменных  
Ага, на видном месте нет. Но может где-нибудь поглубже запрятано упомянание про локальные переменные... 
А тонкости такие: 
- В функции локальные переменные инициализируются нулями 1 раз - при вызове. В !!DO - тоже 1 раз перед циклом.
 
Code: 
 !?FU1; 
!!IF:M^y1 = 0, если до этого не исполнялось обработчиков !?FU1 (в том числе, в других скриптах, или в предыдущих итерациях цикла !!DO)^; 
!!VRy1:S5; 
!?FU1; 
!!IF:M^y1 = 5^;
  
Еще: 
Code: 
 !?FU1; 
!!VRy1:+1; 
!!VRv1:Sy1; 
 
!!DO1/1/100/1:P; 
!!IF:M^v1 = 100^;
  
 
- В других триггерах локальные переменные инициализируются нулями при заходе в каждый обработчик.
 
Code: 
 !?PI; 
!!IF:M^y-1 = 0^; 
!!VRy-1:S5; 
!?FU1; 
!!IF:M^y-1 = 0^;
  
  
 (16.09.2010 22:41)Berserker Wrote:  Quote:Если про инициализацию нулями четко оговорено в справке, то будут. Тут я сомниваюсь, что про обнуление этих переменных есть в справке. Во всяком случае, точно без подробностей. 
Есть. Я всегда полагался на это. Это как в Делфи вдруг окажется, что GetMem не забивает память нулями, а глобальные переменные изначально набиты мусором. 
Про GetMem в справке не сказано, что есть зануление, так что странно на это полагаться. Я всегда считал, что его нету.
			  
			
			
  
Вся правда обо мне
			
		 |  
	 
 | 
	| 17.09.2010 11:01 | 
	
		
	 | 
	
		
		Berserker 
 
 
		
		
		
			
			
 
 
			
 
 
			
Posts: 16788 
	
		
	 | 
	
		
 | 
	| 17.09.2010 22:22 | 
	
		
	 | 
	
		
		GrayFace 
 
 
		
		
		
			
			
 
 
			
 
 
			
Posts: 1233 
	
		
	 | 
	
		
			
			 
			
				Динамические массивы после вызова GetMem заполняются нулями. А сам GetMem нулями не заполняет: 
Code: 
 procedure TForm1.FormCreate(Sender: TObject); 
var 
  p: PChar; 
  i: Integer; 
begin 
  GetMem(p, 4096); 
  for i := 1 to 4096 do 
  begin 
    Assert(p^ = #0); 
    inc(p); 
  end; 
end;
  
			 
			
			
  
Вся правда обо мне
			
		 |  
	 
 | 
	| 18.09.2010 16:11 | 
	
		
	 | 
	
		
		Berserker 
 
 
		
		
		
			
			
 
 
			
 
 
			
Posts: 16788 
	
		
	 | 
	
		
 | 
	| 18.09.2010 20:46 | 
	
		
	 | 
	
		
		GrayFace 
 
 
		
		
		
			
			
 
 
			
 
 
			
Posts: 1233 
	
		
	 | 
	
		
			
			 
			
				Нет, структуры тоже не зануляются: 
Code: 
 type 
  TBigStruct = record 
    a: array[1..4096] of char; 
  end; 
 
procedure TForm1.FormCreate(Sender: TObject); 
var 
  p: ^TBigStruct; 
  i: Integer; 
begin 
  New(p); 
  for i := 1 to 4096 do 
    Assert(p.a[i] = #0); 
end;
  
			 
			
			
  
Вся правда обо мне
			
		 |  
	 
 | 
	| 19.09.2010 02:14 | 
	
		
	 | 
	
		
		Berserker 
 
 
		
		
		
			
			
 
 
			
 
 
			
Posts: 16788 
	
		
	 | 
	
		
 | 
	| 19.09.2010 03:09 | 
	
		
	 | 
	
		
		DemiChron 
 
 
		
		
		
			
			
			 
			
Posts: 1 
	
		
	 | 
	
		
			
			 
			
				Каков прогресс 3.59 версии на текущий момент? 
В этой жизни мы ее дождемся ?)))
			 
			
			
			
		 |  
	 
 | 
	| 24.09.2010 06:08 | 
	
		
	 |