Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.08.29;
Скачать: CL | DM;

Вниз

Работа с памятью   Найти похожие ветки 

 
nikolo ©   (2002-08-07 18:00) [0]

Друзья, помогите! Не могу занести в память больше 100-120 строк из select. У меня есть Query в нем около 100-120 строк из таблички, в которой всего-то 2 поля. Я хочу все это хозяйство занести в память (зачем не спрашивайте). Так вот, максимум до 150 строк без проблем заносятся, но если больше (а мне надо 2000-5000), то сразу Access violation. В чем проблема?
Код следующий:

type
TRec = record
Id: Integer;
Name: String[30];
end;
TARec = array of TRec;
TPRec = ^TARec;

var
P: TPRec;
ARec: TARec;
MaxRec: Integer;

procedure TfmMain.bbDoClick(Sender: TObject);
begin
qry.Open;
SetLength(ARec, qry.RecordCount);
GetMem(P, qry.RecordCount*SizeOf(TRec)+1);
MaxRec := 0;
while Not qry.Eof do begin
Inc(MaxRec);
P^[MaxRec].Id := qry.FieldByName("Id").AsInteger;
P^[MaxRec].Name := qry.FieldByName("Name").AsString;
qry.Next;
end;
Finalize(P);
FreeMem(P);
end;


 
nikolo ©   (2002-08-07 18:51) [1]

Откликнетесь!


 
3JIA9I CyKA ©   (2002-08-07 18:59) [2]

КУ!


 
ZrenBy ©   (2002-08-07 19:04) [3]

Попробуй sizeof(TARec)


 
Набережных С.   (2002-08-07 21:28) [4]

Жуть.

type
TRec = record
Id: Integer;
Name: String[30];
end;
TARec = array of TRec;
// TPRec = ^TARec;

var
// P: TPRec;
ARec: TARec;
MaxRec: Integer;

procedure TfmMain.bbDoClick(Sender: TObject);
begin
qry.Open;
SetLength(ARec, qry.RecordCount);
// GetMem(P, qry.RecordCount*SizeOf(TRec)+1);
MaxRec := 0;
while Not qry.Eof do begin
Inc(MaxRec);
ARec[MaxRec].Id := qry.FieldByName("Id").AsInteger;
ARec[MaxRec].Name := qry.FieldByName("Name").AsString;
qry.Next;
end;
// Finalize(P);
// FreeMem(P);
end;


 
Набережных С.   (2002-08-07 21:30) [5]

Еще это, сразу не заметил:

while Not qry.Eof do begin
ARec[MaxRec].Id := qry.FieldByName("Id").AsInteger;
ARec[MaxRec].Name := qry.FieldByName("Name").AsString;
Inc(MaxRec);
qry.Next;
end;


 
dimis   (2002-08-08 08:33) [6]

проверь чему равен qry.RecordCount
скорее всего он и равен 100-150.
Когда начинает выполняться твой код данные все еще закачиваюся с сервера.
надо сначала зафетчить запрос, а уж помом вычислять размер массива или испоьзовать динамический массив.(TStringList например если не хочется заморачиваться) или самому написать класс.



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

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

Наверх




Память: 0.47 MB
Время: 0.015 c
1-95902
stany
2002-08-17 19:23
2002.08.29
Помогите,плиз... мучаюсь с ListView


3-95721
SZap
2002-08-08 13:34
2002.08.29
Как сформировать запрос в TQuery


4-96007
Sirus
2002-06-25 06:39
2002.08.29
Как получить Handle формы Form3???


14-95949
IronHawk
2002-08-03 23:59
2002.08.29
Где » архивы старых форумов « ???


14-95955
Сатир
2002-08-02 14:52
2002.08.29
Неизвествая конструкция, помогите понять