Показать сообщение отдельно
  #11  
Старый 09.07.2012, 16:30
icWasya icWasya вне форума
Местный
 
Регистрация: 09.11.2010
Сообщения: 499
Репутация: 10
По умолчанию

Кстати, переменная цикла i у Вас то же глобальная, чего все книжки по паскалю настоятельно не рекомендуют делать.
Если S1 и S2 сделать локальными внутри функции OutRes, то к ним нельзя будет достучаться ни до, ни после вызова этой функции.
А если хотите сделать всё по-правилам, то нужно писать класс, примерно такой.

Код:
type 
  TClassRez = class
private
  FS1,FS2:String;
public
  procedure Clear;
  procedure OutRez(I:Integer;Rez:Byte);
public
  property S1:String read FS1;
  property S2:String read FS2;
end;

Код:
procedure TClassRez.Clear;
begin
  FS1:='';
  FS2:='';
end;

procedure TClassRez.OutRez(I:Integer;Rez:Byte);
begin
  if i>2  then 
    s1:=s1+IntToStr(rez)   
  else 
    s2:=s2+IntToStr(rez); 
end;

и соответственно

Код:
procedure TForm1.Button1Click(Sender: TObject); 
var
  ClassRTez: TClassRes;
begin
  randomize;   // <<==-- нельзя делать внутри цикла
  ClassRTez:= TClassRes.Create; (* создаём, строки автоматически становятся пустыми*)
  Label1.Caption:=''; 
  for i:=5 downto 0 do  
  begin  
    rez:=0;   
    a:=random(2);   b:=random(2);   c:=random(2);   
    inc(rez,a);inc(rez,b);inc(rez,c);
    if rez<2 then 
      rez:=0    
    else 
      rez:=1;   
   ClassRez.OutRez(i,Rez);
  Label1.Caption:=Label1.Caption+' '+IntToStr(rez);     
  end;   
  ShowMessage('s1 = '+ClassRez.s1+' s2 = '+ClassRez.s2 ); 
  ClassRez.Free; //<<==-- уничтожаем
end; 

Для дальнеёшего развития код цикла тоже можно сделать методом класса
Ответить с цитированием