а какие симптомы у больного?
....
edited:
пардон... не заметил, по поводу массива... ну ессесно он будет у тебя жрать памяти... тыж в динамический массив засовываешь стринги из запроса... а там небось записей тыщ 10... а если не 10к, то на каждый вызов процедуры ты реалок памяти для массива делаешь, так что если записей мало, но процедура вызывается очень часто, то это вот как раз и есть

Можно по советовать сделать массив не динамический а статический с каким-нить заранее известным и большим размером - он хоть и будет память жрать, зато не будет так систему напрягать постоянными реалоками...
а зачем ты еще раз запихиваешь данные из запроса в массив?
если уж приперло именно в массив писать - можно поступить вот так:
Код:
PShortcut = ^TShortcuts;
TShortcuts = record
ID : Integer;
Name: string;
Path: string;
Description: string;
Comp: integer;
Price: TPrice;
end;
и хранить только указатели...
чтото типа
var
p: PShortcut;
list : TList;
...
в процессе итерирования
p := new (PShortcut);
заполняем поля...
list.add(p);
а итерироваться лучше вот так
while (Query.FindNext)
begin
....
тут мы уже стоим на следующей строке и можем прямо сразу брать нужное и запыхивать куда нада... массив тут не нужен ИМХО
end;