Главная страница
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.043 c
2-1170317335
-John-Doe-
2007-02-01 11:08
2007.02.18
Как удалить секцию из ini- файла?


15-1169013501
NLex
2007-01-17 08:58
2007.02.18
FireBird Component


3-1164292131
Константин_
2006-11-23 17:28
2007.02.18
групировка в sql запросе


15-1169629269
ocean
2007-01-24 12:01
2007.02.18
Посоветуйте алгоритм


4-1156503788
Чапаев
2006-08-25 15:03
2007.02.18
Имя домена