Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.02.25;
Скачать: [xml.tar.bz2];

Вниз

Выдает сообщение Out Of Memory   Найти похожие ветки 

 
senya   (2004-02-06 18:03) [0]

Привет мастера! Такой трабл - когда иду по списку базы клиентов,
при прохождении порядка 200 записей выдает сообщение "Out of memory".
При переходе на каждую запись выполняется
QueryHistory.Close;
QueryHistory.Prepare;
QueryHistory.ParamByName("client").AsInteger :=
QueryRead.FieldByName("id").AsInteger;
if (FormMain.CurUserID = QueryRead.FieldByName
("user_block").AsINteger) or (FormMain.CurRole = True) then
QueryHistory.ParamByName("dates").AsDate := StrToDate
("31.12.2999")
else QueryHistory.ParamByName("dates").AsDate :=
QueryRead.FieldByName("date_block").AsDateTime;
QueryHistory.Open;

Если убираю этот кусок, то не выдает.
Не подскажите что в коде неправильно?


 
VLAD-MAL   (2004-02-06 18:05) [1]

Похоже, в обработчиках событий что-нибудь...
OnInsert, OnEdit и т.п.


 
Sandman25   (2004-02-06 18:10) [2]

попробуйте убрать Prepare.


 
senya   (2004-02-06 18:10) [3]

VLAD-MAL (06.02.04 18:05) [1]
извини, не понял


 
senya   (2004-02-06 18:15) [4]

Sandman25 © (06.02.04 18:10) [2]
не помогло
что ишо можно сделать


 
Sandman25   (2004-02-06 18:20) [5]

Скачайте программу MemProof и посмотрите, какие ресурсы, кроме памяти, программа "сжирает".


 
Mystic   (2004-02-06 18:23) [6]

Узнать, куда уходит память... Проверить память менеджера памяти Delphi, проверить Windows-память, и т. д. Мониторить, но найти утечку. Возможно совободить место на диске со свопом. Купить, в крайнем случае.


 
lmatveev   (2004-02-06 22:32) [7]

Попробуй дописать
if QueryHistory.Prepared then QueryHistory.UnPrepare;
Между Close и Prepare


 
Никто   (2004-02-07 10:48) [8]

У меня недавно была утечка памяти при операции сравнения:

if (DataSet1.Fields[0].Value = DataSet2.Fields[0].Value) then ...

Правда, по моему мнению, это не совсем утечка, а просто неоптимизированная работа менеджера памяти Delphi. При большом количестве сравнений может возникать фрагментация памяти, в результате которой, при очередном запросе памяти, может возникнуть Out Of Memory. Но (с этим мнением) я могу ошибаться.

Я решил этот вопрос следующим образом:

var
V1: Variant;
V2: Variant;
begin
...
V1 := DataSet1.Fields[0].Value;
V2 := DataSet2.Fields[0].Value;
try
if (V1 = V2) then ...
...
finally
VarClear(V1);
VarClear(V2);
end;
...
end;

Так как Delphi работает со значениями полей как с Variant, приводя их, по мере надобности, к нужному типу (string, integer, и т.д.), то в Вашем случае, возможно, имеет место подобная утечка.


 
senya   (2004-02-09 18:27) [9]

Если это поможет, то могу сказать, что если во время прохода по списку отключаю DBGrid, т.е. просто программно прохожу по строкам , то такое сообщение не выдается
могет быть еще у кого -нить есть какие идеи по этому поводу
ваще ничего не получается


 
Mystic   (2004-02-09 18:39) [10]

> senya (09.02.04 18:27) [9]

Что говорит менеджер памяти Delphi? Что по его мнению происходит с памятью?


 
senya   (2004-02-09 18:45) [11]

Mystic © (09.02.04 18:39) [10]
а как это посмотреть?
никогда не приходилось сталкиваться



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

Форум: "Основная";
Текущий архив: 2004.02.25;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.03 c
4-80374
BaDeVlad
2003-12-15 09:40
2004.02.25
Получение выделенного текста


14-80153
Game
2004-01-26 00:15
2004.02.25
Как сделать игру, вроде тех что чтоят на игральных автоматах?


14-80121
Вадим
2004-02-02 14:59
2004.02.25
Upgrade


14-80263
int64
2004-02-04 10:42
2004.02.25
Журналы


4-80379
deema
2003-12-14 19:20
2004.02.25
Как определить ширину текста в пункте меню?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский