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

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

Вернуться   Форум программистов > Delphi программирование > Компоненты Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.03.2009, 20:48   #1
program123
Подтвердите свой е-майл
 
Регистрация: 12.02.2009
Сообщений: 144
По умолчанию Удаление в StringGrid

Нужно чтобы при верном условии строка уходила в StringGrid2 и удалялась из StringGrid1, но удаляет не одну строку i а еще и следующую. Объясните почему происходит удаление двух строк .
Код:
k:=1;
for I := 1 to StringGrid1.RowCount do
if stringgrid1.Cells[3,i]='100' then
begin
stringgrid2.Cells[0,k]:=stringgrid1.cells[0,i];
stringgrid2.Cells[1,k]:=stringgrid1.Cells[1,i];
stringgrid2.Cells[2,k]:=stringgrid1.Cells[2,i];
stringgrid2.Cells[3,k]:=stringgrid1.cells[3,i];
SG(StringGrid1).DeleteRow(i); // У Д А Л Е Н И Е

end;
program123 вне форума Ответить с цитированием
Старый 04.03.2009, 20:59   #2
Квэнди
Старожил
 
Аватар для Квэнди
 
Регистрация: 13.12.2006
Сообщений: 3,859
По умолчанию

1. Строки исчисляются с нуля.
2. Вы изменяете переменную цикла в самом цикле. После удаления сразу же надо прерывать цикл
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи
Квэнди вне форума Ответить с цитированием
Старый 04.03.2009, 21:26   #3
program123
Подтвердите свой е-майл
 
Регистрация: 12.02.2009
Сообщений: 144
По умолчанию

Что значит прерывать, не совсем понял
program123 вне форума Ответить с цитированием
Старый 04.03.2009, 21:40   #4
Квэнди
Старожил
 
Аватар для Квэнди
 
Регистрация: 13.12.2006
Сообщений: 3,859
По умолчанию

Напишите лучше примерно так:
Код:
var i:integer;
begin
i:=-1;k:=1;
while (stringgrid1.Cells[3,i]<>'100')and(i<StringGrid1.rowcount) do
inc(i);
if (i>=0)and(i<StringGrid1.rowcount) then
begin
stringgrid2.Cells[0,k]:=stringgrid1.cells[0,i];
stringgrid2.Cells[1,k]:=stringgrid1.Cells[1,i];
stringgrid2.Cells[2,k]:=stringgrid1.Cells[2,i];
stringgrid2.Cells[3,k]:=stringgrid1.cells[3,i];
StringGrid1.DeleteRow(i);
end;
end;
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи
Квэнди вне форума Ответить с цитированием
Старый 04.03.2009, 21:41   #5
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Цитата:
Сообщение от program123 Посмотреть сообщение
Что значит прерывать, не совсем понял
Выполнение цикла прерывается командой break.
mihali4 вне форума Ответить с цитированием
Старый 04.03.2009, 21:50   #6
program123
Подтвердите свой е-майл
 
Регистрация: 12.02.2009
Сообщений: 144
По умолчанию

Спасибо, сделал прерыванием Break.
program123 вне форума Ответить с цитированием
Старый 07.03.2009, 09:13   #7
ryzubexx
Новичок
Джуниор
 
Регистрация: 07.03.2009
Сообщений: 1
По умолчанию

А у меня Breack не получилось, как сделал?
ryzubexx вне форума Ответить с цитированием
Старый 07.03.2009, 09:35   #8
AlDelta
Реанимируюсь...
Участник клуба
 
Аватар для AlDelta
 
Регистрация: 19.07.2007
Сообщений: 1,445
По умолчанию

Break <> Breack

Читайте внимательно
Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живёте.
Правила форума => Правила раздела => Для общего развития => Помощь студентам => Перед тем, как создавать тему, скачайте себе...
P.S.: форум не песочница (с)
название статьи на сайте MS: "Отмена принудительного отключения автоматического запуска в реестре Windows"
AlDelta вне форума Ответить с цитированием
Старый 07.03.2009, 13:07   #9
Квэнди
Старожил
 
Аватар для Квэнди
 
Регистрация: 13.12.2006
Сообщений: 3,859
По умолчанию

не стремитесь к использованию прерываний цикла. Это совершенно не красивый тон в программировании. Это конечно не goto но уже близко.
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи
Квэнди вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
StringGrid - удаление строк и столбцов ReM Общие вопросы Delphi 4 22.12.2008 19:17
Удаление строк Dr.Badnezz Общие вопросы Delphi 1 07.10.2008 15:22
удаление строк Dime_x Microsoft Office Excel 2 07.10.2008 13:38
Удаление записей Blackmore БД в Delphi 2 26.05.2008 08:18
Удаление спецсимволов General Общие вопросы Delphi 9 22.11.2007 07:00