Главная страница
    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.45 MB
Время: 0.005 c
1-95786
AL2002
2002-08-19 20:06
2002.08.29
Вариантов много. Функции две


1-95733
_Pavel_
2002-08-16 15:42
2002.08.29
Денежная единица


4-96021
Ally
2002-06-26 13:59
2002.08.29
WideChar в RichEdit


3-95647
BJValentine
2002-08-07 17:35
2002.08.29
ADO


14-95980
Aga
2002-08-03 07:55
2002.08.29
ip





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский