![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
Результаты опроса: Оптимизация процедуры | |||
1 вариант |
![]() ![]() ![]() ![]() |
1 | 100.00% |
2 вариант |
![]() ![]() ![]() ![]() |
1 | 100.00% |
а предлогаю |
![]() ![]() ![]() ![]() |
1 | 100.00% |
а лучше вот так |
![]() ![]() ![]() ![]() |
1 | 100.00% |
Опрос с выбором нескольких вариантов ответа. Голосовавшие: 1. Вы ещё не голосовали в этом опросе |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Регистрация: 29.04.2008
Сообщений: 5
|
![]()
ВЫручайте!!!
![]() ![]() ![]() Как оптимизировать (уменьшить, улучшить) процеду. Надеюсь на помощь. В заранее СПАСИБО! {===============Считаем сумму ячеек одних StringGrid-ов========= ====================и присваеваем ее ячейкам других StringGrid-ов} //*********************************** *********************************Fi rst row bez:=0; for i:= 1 to 20 do begin if not(Length(StringGrid2.Cells[1,i]) = 0) then //Если ячейка не пуста begin bez:=bez + StrToFloat (StringGrid2.Cells[1,i]);//Считываем ячейку StringGrid1.Cells[1,1]:= FloatToStr (bez / 20);//Выводим сумму в ячейке end; end; bez:=0; for i:= 1 to 20 do begin if not(Length(StringGrid4.Cells[1,i]) = 0) then //Если ячейка не пуста begin bez:=bez + StrToFloat (StringGrid4.Cells[1,i]); StringGrid3.Cells[1,1]:= FloatToStr (bez / 20); end; end; bez:=0; for i:= 1 to 20 do begin if not(Length(StringGrid6.Cells[1,i]) = 0) then //Если ячейка не пуста begin bez:=bez + StrToFloat (StringGrid6.Cells[1,i]); StringGrid5.Cells[1,1]:= FloatToStr (bez / 20); end; end; bez:=0; for i:= 1 to 20 do begin if not(Length(StringGrid8.Cells[1,i]) = 0) then //Если ячейка не пуста begin bez:=bez + StrToFloat (StringGrid8.Cells[1,i]); StringGrid7.Cells[1,1]:= FloatToStr (bez / 20); end; end; bez:=0; for i:= 1 to 20 do begin if not(Length(StringGrid10.Cells[1,i]) = 0) then //Если ячейка не пуста begin bez:=bez + StrToFloat (StringGrid10.Cells[1,i]); StringGrid9.Cells[1,1]:= FloatToStr (bez / 20); end; end; //*********************************** ****************************** Second row bez:=0; for i:= 21 to 40 do begin if not(Length(StringGrid2.Cells[1,i]) = 0) then //Если ячейка не пуста begin bez:=bez + StrToFloat (StringGrid2.Cells[1,i]); StringGrid1.Cells[1,2]:= FloatToStr (bez / 20); end; end; bez:=0; for i:= 21 to 40 do begin if not(Length(StringGrid4.Cells[1,i]) = 0) then //Если ячейка не пуста begin bez:=bez + StrToFloat (StringGrid4.Cells[1,i]); StringGrid3.Cells[1,2]:= FloatToStr (bez / 20); end; end; bez:=0; for i:= 21 to 40 do begin if not(Length(StringGrid6.Cells[1,i]) = 0) then //Если ячейка не пуста begin bez:=bez + StrToFloat (StringGrid6.Cells[1,i]); StringGrid5.Cells[1,2]:= FloatToStr (bez / 20); end; end; bez:=0; for i:= 21 to 40 do begin if not(Length(StringGrid8.Cells[1,i]) = 0) then //Если ячейка не пуста begin bez:=bez + StrToFloat (StringGrid8.Cells[1,i]); StringGrid7.Cells[1,2]:= FloatToStr (bez / 20); end; end; bez:=0; for i:= 21 to 40 do begin if not(Length(StringGrid10.Cells[1,i]) = 0) then //Если ячейка не пуста begin bez:=bez + StrToFloat (StringGrid10.Cells[1,i]); StringGrid9.Cells[1,2]:= FloatToStr (bez / 20); end; end; //*********************************** ****************************** Third row ... |
![]() |
![]() |
![]() |
#2 |
Участник клуба
Регистрация: 12.10.2007
Сообщений: 1,204
|
![]()
Оформить процедурой:
Что-то вида: procedure summ(DestCol, DestRow, R1, R2:integer; SG1, SG2:TStringGrid) ... DestCol, DestRow - координаты ячейки назначения R1, R2 - диапазон ячеек SG1, SG2 - StringGrid'ы Потом просто вызывать summ(1,1, 1,20, StringGrid1, StringGrid2); ... |
![]() |
![]() |
![]() |
#3 |
Регистрация: 29.04.2008
Сообщений: 5
|
![]() ![]() ![]() |
![]() |
![]() |
![]() |
#4 |
Участник клуба
Регистрация: 12.10.2007
Сообщений: 1,204
|
![]()
А что расписывать. Берем любой кусок кода (по-моему они у вас все одинаковые) и делаем изменяемые значения параметрами процедуры:
Код:
'StringGrid'+intToStr(k) поищите на форуме по слову FindComponent Последний раз редактировалось alexBlack; 29.04.2008 в 13:36. |
![]() |
![]() |
![]() |
#5 |
Регистрация: 29.04.2008
Сообщений: 5
|
![]() ![]() сдесь описываем Function SumSG function Sumsg(SG:TStringGrid; Col, Row, Count: integer):string; var bez: dooble; i: integer; begin bez:=0; for i:=0 to Count-1 do if not(Length(SG.Cells[Col,Row+i]) = 0) then bez:=bez + StrToFloat (SG.Cells[Col,Row+i]); Result:=FloatToStr(bez / Count); end; ..... for i:= 1 to 5 do for j:= 0 to k-1 do TStringGrid (FindComponent('StringGrid'+IntToSt r (i*2-1)).Cells[1,j+1]:= SumSG(TStringGrid (FindComponent( 'StringGrid'+IntToStr(i*2)), 1, 20*j+1, 20); |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Помогите оптимизировать! | Altera | Общие вопросы Delphi | 6 | 25.03.2008 20:09 |
Помогите оптимизировать HTML код после Publisher | Гербера | HTML и CSS | 16 | 03.12.2007 11:46 |
помогите оптимизировать процедуру | _XspeC_ | Общие вопросы Delphi | 12 | 08.04.2007 02:05 |
Помогите оптимизировать сайт | Nadejda | HTML и CSS | 4 | 07.01.2007 21:04 |