Главная страница
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.035 c
1-41160
Stratos
2003-11-01 02:48
2003.11.13
битовые поля в записях


14-42014
undert
2003-10-14 01:35
2003.11.13
Что делать ?


1-41317
Erik
2003-10-30 16:10
2003.11.13
Как установить фокус на ветку в TVirtualStringTree


3-40844
chtr
2003-10-21 15:45
2003.11.13
BDE или ADO при работе с dBase?


4-42284
Basilio
2003-07-29 18:19
2003.11.13
Неумирающий процесс.