Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.11.2009, 08:36   #1
Ветас
Пользователь
 
Регистрация: 09.11.2007
Сообщений: 45
По умолчанию Просьба помочь разобраться почему значения попадают в Memo

Здравствуйте, Уважаемые форумчане.

Решаю задачу:
Формируется массив из 10 целых чисел путем ввода с клавиатуры. Числа заносятся в ячейки компонента StringGrid

В программе идет проверка на заполненность всех ячеек компонента StringGrid

Код:
Memo1.Text:='';
 for i:=1 to 10 do
    if StringGrid1.Cells[i,0]='' then begin
   ShowMessage('Не все ячейки заполнены!!!');

   break;
   end
   else
   a[i]:=StrToInt(StringGrid1.Cells[i-1,0]);
Но при нажатии на копку "Сформировать" выдается сообщение "Не все ячейки заполнены" и в Memo попадают случайные числа.

Как сделать так, чтобы случайные числа не попадали в Memo при нажатии на кнопку "Сформировать" если не все ячейки компонента StringGrid заполнены ?

Процедура нажатия на кнопку "Сформировать" :

Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  a        :array[1..10] of integer;
  i        :integer;
  changed  :boolean;
  buf      :integer;
begin
   Memo1.Text:='';
 for i:=1 to 10 do
    if StringGrid1.Cells[i,0]='' then begin
   ShowMessage('Не все ячейки заполнены!!!');

   break;
   end
   else
   a[i]:=StrToInt(StringGrid1.Cells[i-1,0]);

 repeat
   changed:=false;
   for i:=1 to 10 - 1 do
     if a[i]<a[i+1] then begin
       buf:=a[i];
       a[i]:=a[i+1];
       a[i+1]:=buf;
       changed:=true;
     end;
 until not changed;
 
 for i:=1 to 10 do
   Memo1.Lines.Add(IntToStr(a[i])) ;
 
end;
Ветас вне форума Ответить с цитированием
Старый 12.11.2009, 08:58   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Код:
 ShowMessage('Не все ячейки заполнены!!!');
  exit;
Тогда выполнение до
Код:
for i:=1 to 10 do
   Memo1.Lines.Add(IntToStr(a[i])) ;
не дойдет и в Мемо не будет ничего писаться

Смысля ясна?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 12.11.2009, 09:11   #3
Ветас
Пользователь
 
Регистрация: 09.11.2007
Сообщений: 45
По умолчанию

Спасибо за ответ.
Но скажите, пожалуйста, даже если я введу во все ячейки числа - все равно выскочит сообщение "Не все ячейки заполнены"
Ветас вне форума Ответить с цитированием
Старый 12.11.2009, 09:40   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
все равно выскочит сообщение "Не все ячейки заполнены"
Значит так оно и есть.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 12.11.2009, 10:01   #5
Ветас
Пользователь
 
Регистрация: 09.11.2007
Сообщений: 45
По умолчанию

В том то и дело что во все ячейки вбиваются числа, а все равно выскакивает сообщение "Не все ячейки заполнены"

Может быть какое то еще условие надо написать в процедуре ?

Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  a        :array[1..10] of integer;
  i        :integer;
  changed  :boolean;
  buf      :integer;
begin
   Memo1.Text:='';
 for i:=1 to 10 do
    if StringGrid1.Cells[i,0]='' then begin
   ShowMessage('Не все ячейки заполнены!!!');
   exit;
   end
   else
   a[i]:=StrToInt(StringGrid1.Cells[i-1,0]);

 repeat
   changed:=false;
   for i:=1 to 10 - 1 do
     if a[i]<a[i+1] then begin
       buf:=a[i];
       a[i]:=a[i+1];
       a[i+1]:=buf;
       changed:=true;
     end;
 until not changed;
 
 for i:=1 to 10 do
   Memo1.Lines.Add(IntToStr(a[i])) ;
 
end;
Ветас вне форума Ответить с цитированием
Старый 12.11.2009, 10:11   #6
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

что-то не пойму... не вы ли это?
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 12.11.2009, 10:12   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
а все равно выскакивает сообщение "Не все ячейки заполнены"
Все все??? В первой строке? Ты уверен?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 12.11.2009, 11:27   #8
Ветас
Пользователь
 
Регистрация: 09.11.2007
Сообщений: 45
По умолчанию

Большое спасибо всем за ответы! Получилось!

Код:
for i:=1 to 10 do
   if StringGrid1.Cells[i-1,0]='' then begin
   ShowMessage('Не все ячейки заполнены!!!');
   exit;
   end
   else
   a[i]:=StrToInt(StringGrid1.Cells[i-1,0]);
Ветас вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Просьба помочь в написании процедуры. Ветас Помощь студентам 5 09.11.2009 23:04
Нужна формула, просьба помочь adfjsk Дима Microsoft Office Excel 11 13.04.2009 12:51
Просьба помочь с задачей. kry Паскаль, Turbo Pascal, PascalABC.NET 9 11.01.2009 13:53
Просьба помочь новичку со списками. cbst Общие вопросы C/C++ 4 13.06.2008 19:32
Просьба помочь с состовлением формулы... c_zurab Microsoft Office Excel 1 11.03.2008 01:35