Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.83/12: Рейтинг темы: голосов - 12, средняя оценка - 4.83
0 / 0 / 0
Регистрация: 06.08.2012
Сообщений: 18
1

Удаление пустой строки либо заполнение пустой строки нулями

16.08.2012, 11:47. Просмотров 2234. Ответов 10
Метки нет (Все метки)


Доброго дня суток. Имеется функция удаления строки со значением 0.
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
procedure TForm2.N5Click(Sender: TObject);
var n, ACol, ARow, x: integer;
begin
for x:=1  to StringGrid2.RowCount-1 do
begin
while
 '0'=StringGrid2.Cells[12,x] 
do
    begin
if (StringGrid2.RowCount=2) then exit;
for n:=x to StringGrid2.RowCount-2 do begin
StringGrid2.Rows[n]:=StringGrid2.Rows[n+1];
end;
StringGrid2.RowCount:=StringGrid2.RowCount-1;
 
end; end;
ShowMessage('Deleted!');
end;
нормально работает удаля нужные строки...мне же нужно чтоб удаляля и пустые тоже.
если использую ' '=StringGrid2.Cells[12,x] то удаляет всю таблицу.
Либо как альтернативу можно как то зделать чтоб пустые поля автоматически нулями забивались?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.08.2012, 11:47
Ответы с готовыми решениями:

Запрет на удаление пустой строки StringGrid
доброго времени суток! мне надо сделать так, чтобы единственная пустая строка(на скрине) не...

Как, проходя файл посимвольно, удалить пустые строки? Пустой символ в Char :scratch:
Как, проходя файл посимвольно, удалить пустые строки? Пустой символ в Char :scratch:

Заполнение последней строки StringGrid нулями.
Дана таблица StringGrid (Delphi). Количество строк неизвестно. Как заполнить последнюю строку...

Полосатое закрашивание строк от пустой до пустой строки
Добрый вечер. Подскажите пожалуйста,необходимо в таблице на 50 листах закрасить строки в таком...

10
Модератор
62942 / 46956 / 32360
Регистрация: 18.05.2008
Сообщений: 113,771
16.08.2012, 11:57 2
Delphi
1
while (StringGrid2.Cells[12,x]='0')or(StringGrid2.Cells[12,x]='')
0
0 / 0 / 0
Регистрация: 06.08.2012
Сообщений: 18
16.08.2012, 12:05  [ТС] 3
говорю же что он при указании ' '=StringGrid2.Cells[12,x] удаляет всю таблицу....это не подходит. Я так понимаю что значение ' ' он воспринимает не как пустую страку, а наоборот как строку с любым значением.
0
421 / 351 / 19
Регистрация: 14.05.2012
Сообщений: 1,437
16.08.2012, 12:34 4
Цитата Сообщение от Hardkonans Посмотреть сообщение
говорю же что он при указании ' '=StringGrid2.Cells[12,x] удаляет всю таблицу....это не подходит. Я так понимаю что значение ' ' он воспринимает не как пустую страку, а наоборот как строку с любым значением.
а ты попробуй

Добавлено через 42 секунды
только не так ' '=StringGrid2.Cells[12,x] а как
Puporev, показал
0
0 / 0 / 0
Регистрация: 06.08.2012
Сообщений: 18
16.08.2012, 13:02  [ТС] 5
в том то и дело что это все перепробовал и не помогло.
0
421 / 351 / 19
Регистрация: 14.05.2012
Сообщений: 1,437
16.08.2012, 14:00 6
for x:=1 to StringGrid2.RowCount-1 do
if StringGrid2.Cells[12,x] ='' then StringGrid2.Cells[12,x]:='0';

так должно нулями забивать
0
Модератор
62942 / 46956 / 32360
Регистрация: 18.05.2008
Сообщений: 113,771
16.08.2012, 14:30 7
Удаление строк в которых первая ячейка пустая или ноль.
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
procedure TForm1.Button1Click(Sender: TObject);
var i,j,k:byte;
begin
i:=1;
while i<sg.RowCount do
if (sg.Cells[1,i]='0')or(sg.Cells[1,i]='') then
 begin
  if i=sg.RowCount-1 then sg.RowCount:=sg.RowCount-1
  else
   begin
    for j:=i to sg.RowCount-2 do
    for k:=1 to sg.ColCount-1 do
    sg.Cells[k,j]:=sg.Cells[k,j+1];
    sg.RowCount:=sg.RowCount-1
   end;
 end
else inc(i);
end;
1
Миниатюры
Удаление пустой строки либо заполнение пустой строки нулями   Удаление пустой строки либо заполнение пустой строки нулями  
0 / 0 / 0
Регистрация: 06.08.2012
Сообщений: 18
16.08.2012, 14:38  [ТС] 8
при эксперементах было выявлено что проблема не в пустых строках а в чем то другом...если таблицу забиваешь нуляму то он тоже удаляет все оставляя 1 строку. Отсюда вывод: удаляется все когда строк для удаления очень много. Как этого избежать?
0
Модератор
62942 / 46956 / 32360
Регистрация: 18.05.2008
Сообщений: 113,771
16.08.2012, 14:39 9
Hardkonans, А Вы на форум экстрасенсов не обращались? А то наши все в отпуске...
0
0 / 0 / 0
Регистрация: 06.08.2012
Сообщений: 18
16.08.2012, 14:51  [ТС] 10
Спасибо ваш алгоритм помог...вроде отличие небольшое но он работает нормально..испольую его
Спасибо.
0
3941 / 1866 / 337
Регистрация: 16.03.2012
Сообщений: 3,880
16.08.2012, 17:55 11
Во-первых в коде TC нужно после строки 5 вставить:
Delphi
1
If x>=StringGrid2.RowCount Then Break;
так как выражение в заголовке For вычисляется один раз.
При экспериментировании было определено, что именно из-за перестановки аргументов выражения сравнения давало такой результат. Т.е. нужно было писать:
Delphi
1
while StringGrid2.Cells[12,x]='' do
а не:
Delphi
1
while ''=StringGrid2.Cells[12,x] do
Может это связано с оптимизацией кода компилятором. Пока не понял.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.08.2012, 17:55

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь.

Удаление пустой строки в DataGridView
Собственно, сабж. Помогите пожалуйста сделать обход ошибки, вылетающей при удалении пустой строки в...

Удаление пустой строки из TextBox
Как удалить пустую строку из textBox

Удаление пустой строки в DBGrid
Здравствуйте, эксперты! Подскажите, пожалуйста, как поступить в следующей ситуации. Есть на форме...

Удаление пустой строки в текстовом файле
$filecontent = Get-Content $file.FullName подскажите как удалить в текстовом файле все первые...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.