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

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

StringGrid


Страницы:   1 2

проходил мимо решил заглянуть ©   (2006-11-03 16:08:00) 

Уважаемые мастера, вопрос: Можно ли одной коммандой очистить StringGrid от всех значений, спасибо.


Anatoly Podgoretsky   (2006-11-04 18:04:00) [1]

Повторное использование переменных это точный символ в программировании, делается проверка на допустимость и если допустимо то используется повторно, иначе создается с нуля.

Вызывает множество ошибок.


guav   (2006-11-04 13:02:00) [2]

> [24] Anatoly Podgoretsky ©   (04.11.06 10:46)
> Если количество большое, то обычно ветка мусор

А если небольшое, то её интересно читать только если заинтересован по теме.


> [27] Anatoly Podgoretsky ©   (04.11.06 10:51)
> Если
>
> o.Free;
> o := TO.Create
>
> то ни как нет, а вот
>
> if not assigned(var) then Create
>
> вот это желание повторно использовать и это явные грабли
> почти в большинстве
> случаев

По мне, первое хуже, это тоже повторное использование переменной но без явного признака задействованности переменной. Конкретно такой код опасен, т.к. из конструктора может буть исключение и всё, приплыли. Здесь лучше было бы сначала создать новый, а потом удалять старый. Другие грабли, когда приходится менять класс грида. Третьи - с воспроизведением всех свойств в новом объекте (вместо изменения одного в старом).

Так не следует делать, пока есть нормальный способ. Я вообще был удивлён что Вы такое предложили.


Anatoly Podgoretsky   (2006-11-04 10:51:00) [3]

> guav  (04.11.2006 1:47:19)  [19]

> Сначала Free потом Create это более явное повторное использование
> переменных.

Если

o.Free;
o := TO.Create

то ни как нет, а вот

if not assigned(var) then Create

вот это желание повторно использовать и это явные грабли почти в большинстве
случаев


Anatoly Podgoretsky   (2006-11-04 10:47:00) [4]

> Германн  (04.11.2006 1:44:18)  [18]

> И всё-равно я так и не улавливаю смысла "освобождать" внутри программы
> память, которую занимает TStringGrid.Cells?

У автора есть желание, почему оно такое неизвестно.


Anatoly Podgoretsky   (2006-11-04 10:46:00) [5]

> Германн  (04.11.2006 1:40:17)  [17]

> Не понял. Объясни, плиз.

Поймешь со временем


Anatoly Podgoretsky   (2006-11-04 10:46:00) [6]

> DesWind  (04.11.2006 1:38:16)  [16]

Если количество большое, то обычно ветка мусор. Нормальной ветке хватает 2/3
ответов.


Anatoly Podgoretsky   (2006-11-04 10:45:00) [7]

> guav  (04.11.2006 1:37:15)  [15]

> При этом ни в коем случае не использовав переменную повторно :-)

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


Anatoly Podgoretsky   (2006-11-04 10:44:00) [8]

> Германн  (04.11.2006 1:32:14)  [14]

> Только, имхо Create я бы вставил в некую процедуру, которая помимо
> "создания" ещё и заполняла фиксированные ячейки.

Я бы тоже сделал по уму.


Shopot   (2006-11-04 09:14:00) [9]


procedure ClearStringGrid(StringGrid: TStringGrid);
var
 i: Integer;
begin
 for i := 0 to StringGrid.ColCount - 1 do
   StringGrid.Cols[i].Clear;
end;


Германн   (2006-11-04 02:02:00) [10]


> guav ©   (04.11.06 01:47) [19]
>
> > [17] Германн ©   (04.11.06 01:40)
>
> http://www.delphimaster.ru/cgi-bin/forum.pl?n=3&id=1161593916
> [9]
> Сначала Free потом Create это более явное повторное использование
> переменных.
>

И в чём проблема? Что хочу, то и уничтожаю. А в освободившуюся ячейку памяти записываю адрес вновь созданного объекта.


guav   (2006-11-04 01:47:00) [11]

> [17] Германн ©   (04.11.06 01:40)

http://www.delphimaster.ru/cgi-bin/forum.pl?n=3&id=1161593916[9]
Сначала Free потом Create это более явное повторное использование переменных.


Германн   (2006-11-04 01:44:00) [12]

И всё-равно я так и не улавливаю смысла "освобождать" внутри программы память, которую занимает TStringGrid.Cells?


Германн   (2006-11-04 01:40:00) [13]


> При этом ни в коем случае не использовав переменную повторно
> :-)
>

Не понял. Объясни, плиз.


DesWind   (2006-11-04 01:38:00) [14]

Прошел бы мимо сообщения... Но уж больно заинтерисовало коллличество ответов )


guav   (2006-11-04 01:37:00) [15]

> [11] Anatoly Podgoretsky ©   (04.11.06 00:17)


> Так после Free надо сделать Create


При этом ни в коем случае не использовав переменную повторно :-)


Германн   (2006-11-04 01:32:00) [16]


> Anatoly Podgoretsky ©   (04.11.06 01:09) [13]
>
> > Германн  (04.11.2006 1:01:12)  [12]
>
> Create это другой вопрос, который возник позже.
> Быстрее пары Free/Create ничего нет и по ресурсам тоже хорошо
>

Дураком бы я был, если б спорил. Только, имхо Create я бы вставил в некую процедуру, которая помимо "создания" ещё и заполняла фиксированные ячейки.


Anatoly Podgoretsky   (2006-11-04 01:09:00) [17]

> Германн  (04.11.2006 1:01:12)  [12]

Create это другой вопрос, который возник позже.
Быстрее пары Free/Create ничего нет и по ресурсам тоже хорошо


Германн   (2006-11-04 01:01:00) [18]


> Так после Free надо сделать Create
>

Это тоже будет больше одной команды. :-)
Я только смысл сабжа не улавливаю. А зачем нужно
> очистить StringGrid от всех значений
?
Особенно после того, как посмотел реализацию TStringGrid.SetCells


Anatoly Podgoretsky   (2006-11-04 00:17:00) [19]

> проходил мимо решил заглянуть  (03.11.2006 16:32:06)  [6]

Так после Free надо сделать Create


Loginov Dmitry   (2006-11-03 17:47:00) [20]

проходил мимо решил заглянуть   (03.11.06 16:32) [6]
а это согласитесь не есть очищение от значений.


Это самый гарантированный способ очищения.


Страницы:   1 2

Наверх

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