Вниз
Скачать: CL | DM;

вложенная структура   Найти похожие ветки 

 
GanibalLector ©   (2006-12-26 16:32) [0]

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

Собственно,сделал так :

type
TLine = packed record
 hLine:String[$FF];
end;
PLineArray = ^TLineArray;
TLineArray= array[1..25000] of TLine;

TMyMode = packed record
 Count:Integer;
 Line:PLineArray;
end;
PMyMode =^TMyMode;

function Potok(Param:PMyMode):DWord;
 var I:Integer;
begin
 for I:=1 to Param.Count do
 begin
   //использую массив
   //PLineArray(Param.Line)[I].hLine;
 end;

 Dispose(Param.Line);
 Dispose(Param);
 Result:=0;
end;

procedure TForm1.Button1Click(Sender: TObject);
 var ThreadID:DWord;
     Obj:PMyMode;
     I:Integer;
     Q:PLineArray;

 const Max_=150; // это значение меняется !!!
begin

 New(Q);
 for I:=1 to Max_ do
  Q^[I].hLine:="Test"+IntToStr(I);

 New(Obj);
 Obj^.Count:=Max_;
 Obj^.Line:=Q;
 CloseHandle(BeginThread(nil,0,@Potok,Obj,0,ThreadID));
end;



Все работает...утечек нет. Но, жутко не нравится мне мой подход.
Я выделяю память под TLineArray тогда как реально буду использовать лишь малую часть этого массива.

Подскажите, как поступить ???


 
Сергей М. ©   (2006-12-26 16:44) [1]


> выделяю память под TLineArray тогда как реально буду использовать
> лишь малую часть этого массива


Именно это тебе "жутко не нравится" ?

Если так, то используй дин.массивы или дин.списки - на то они и динамические, что хранят в каждый момент времени только то что в них реально требуется хранить


 
Sha ©   (2006-12-26 16:45) [2]

а что мешает передавать array of string?



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

Скачать: CL | DM;



Память: 0.45 MB
Время: 0.027 c
1-1167111780
Layner
2006-12-26 08:43
2007.02.18
Как отловить перемещение DBGrid по горизонтальной прокуртке?


6-1147537557
scolopax
2006-05-13 20:25
2007.02.18
ClientSocket1.Open;


9-1144133583
Ford
2006-04-04 10:53
2007.02.18
Бросайте GLScene


2-1169894802
LobaS
2007-01-27 13:46
2007.02.18
Освобождение памяти


2-1170225188
КАРО
2007-01-31 09:33
2007.02.18
Вопрос по меню




   Наверх