Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.02.18;
Скачать: 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 вся ветка

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

Наверх




Память: 0.47 MB
Время: 0.04 c
15-1169431613
SerJaNT
2007-01-22 05:06
2007.02.18
Вопросы по Wi-Fi


15-1170042777
Slider007
2007-01-29 06:52
2007.02.18
С днем рождения ! 29 января


4-1160074863
electric
2006-10-05 23:01
2007.02.18
HOOK на мышь


15-1169032453
PZ
2007-01-17 14:14
2007.02.18
Призрак в актовом зале (?)


2-1169866253
APiC
2007-01-27 05:50
2007.02.18
Контекстное меню