Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.11.13;
Скачать: CL | DM;

Вниз

Вопрос по заполнению динамического массива.   Найти похожие ветки 

 
iNew ©   (2003-10-31 09:04) [0]

Мне необходимо заполнить динамический массив элементами из StringGrida, но так чтобы если строка StringGrida пустая, то её не заносить в массив, я сделеал это так:

procedure TfMonDirMain.Button4Click(Sender: TObject);
var i,mylen : integer;
s: string;
TempSLarr: array of array of String;
begin
mylen:=StringGrid1.RowCount;
for i:=0 to mylen-2 do
begin
s:=Trim(StringGrid1.Cells[0,i+1]+StringGrid1.Cells[1,i+1]+
StringGrid1.Cells[2,i+1]);
if s="" then continue;
SetLength(TempSLarr,i+1,3);
TempSLarr[i,0]:=StringGrid1.Cells[0,i+1];
TempSLarr[i,1]:=StringGrid1.Cells[1,i+1];
TempSLarr[i,2]:=StringGrid1.Cells[2,i+1];
end;
end;

Нормально ли это, или не хорошо на каждой итерации переопределять длину массива. Если не хорошо то как лучше сделать?


 
han_malign ©   (2003-10-31 09:13) [1]

mylen:=StringGrid1.RowCount;
SetLength(TempSLarr,mylen,3);
realLen:=0;

for i:=0 to mylen-2 do
begin
s:=Trim(StringGrid1.Cells[0,i+1]+StringGrid1.Cells[1,i+1]+
StringGrid1.Cells[2,i+1]);
if s="" then continue;
inc(realLen);
TempSLarr[i,0]:=StringGrid1.Cells[0,i+1];
TempSLarr[i,1]:=StringGrid1.Cells[1,i+1];
TempSLarr[i,2]:=StringGrid1.Cells[2,i+1];
end;
SetLength(TempSLarr,realLen,3);


 
Романов Р.В. ©   (2003-10-31 10:31) [2]

Если строк много то возникнет торможение при переопределении размеров массива. В общем задачу можно решить двумя способами
1. Задаешь максимальное размеры массива, после его заполнения выполняешь SetLength по количеству заполненых элементов
2. Перед заполнением массива выясняешь кол-во непустых строк и задаешь точные размеры



Страницы: 1 вся ветка

Текущий архив: 2003.11.13;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.022 c
1-41494
MaG
2003-10-28 16:13
2003.11.13
TlistBox


1-41657
Rimas
2003-10-25 14:32
2003.11.13
русский help


7-42168
avkiev
2003-08-29 01:29
2003.11.13
Работа с модемом при помощи АТ-команд


3-41006
AleksDan
2003-10-27 01:12
2003.11.13
Вопрос по SQL


1-41498
pavlov
2003-10-28 11:00
2003.11.13
Использование TThread внутри dll