Главная страница
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.048 c
3-1164623047
Feds
2006-11-27 13:24
2007.02.18
Ошибка с проверкой на Null


2-1170403279
FF
2007-02-02 11:01
2007.02.18
Как dll узнать значение глобальной переменной, объявленной...


2-1170148925
zdm
2007-01-30 12:22
2007.02.18
EhLib 4 bds 2006


6-1158032979
kotRec
2006-09-12 07:49
2007.02.18
Время на сервере


3-1164780850
Монг
2006-11-29 09:14
2007.02.18
Коппонент ADOQuery