Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Ячейки [D7, XP]


Silica ©   (2006-02-05 11:16:00) 

Нужно в StringGrid (таблице) подсчитать количество ячеек в нулевой строке, но без тех ячеек, которые имеют значение "-1". Следующий код подсчитывает количество, но иногда выводит неправильное значение. Всего ячеек 10 в строке. Иногда вместо 10, выводится 9, вместо 7 - 6. Иногда правильно выводит.

procedure TForm1.Button3Click(Sender: TObject);
var x, y : integer;
begin
 y := 0;
 for i := 0 to k do
 begin
   if stringgrid1.Cells[i,0] = '-1' then
   y := y + 1;
   x := stringgrid1.ColCount - y;
   label1.Caption := inttostr(x);
   end;
end;

Подскажите, пожалуйста, что не так.


Плохиш   (2006-02-05 22:09:00) [1]


> k := 10. -  это константа.

Может лучше вместо этого stringgrid1.ColCount - 1 использовать.

А в общем-то рекомендую к [5] прислушаться.


Apollon_604   (2006-02-05 17:35:00) [2]

Попробуй отладчик использовать


Silica   (2006-02-05 14:12:00) [3]


> Palladin


> Плохиш


все равно ошибается иногда на единицу. с первой загрузки показывает правильно, но при последующих может ошибаться. У меня в таблице числа генерируются(button 1), затем удаляются совпадения(button2), заменяясь на "-1"  и выводится отчет(button3).
k := 10. -  это константа.


Плохиш   (2006-02-05 12:50:00) [4]

Хотя, пардон, но переменная "k" как-то в условия задачи [0] не вписывается, если её значение не равно количеству столбцов в гриде.


Плохиш   (2006-02-05 12:48:00) [5]

Может стоит без лишних телеодвижений задачу реализовывать?

procedure TForm1.Button3Click(Sender: TObject);
var i,n : integer;
begin
 n := 0;
 for i := 0 to k do
   if trim(stringgrid1.Cells[i,0]) <> '-1' then Inc(n);
 label1.Caption := inttostr(n);
end;


Palladin   (2006-02-05 12:01:00) [6]

попробуй так


procedure TForm1.Button3Click(Sender: TObject);
var i,n : integer;
begin
n := 0;
for i := 0 to k do
begin
  if trim(stringgrid1.Cells[i,0]) = '-1' then
  Inc(n);
 end;
label1.Caption := inttostr(stringgrid1.ColCount-n);
end;


Наверх

Титульная страница Поиск, карта сайта Написать письмо