утечка в VariantArray
От: Contact Россия http://www.lact.ru
Дата: 24.03.02 17:20
Оценка:
Товарищи, подскажите пожалуйста как освобождать память в 'variant arrays'. Создал я её (v:=varCreateArray(..)), использовал, как теперь уничтожить? v:=unassigned; varclear(v); v:=0; не помогают, диспетчер задач показывает что при каждой итерации прога жрёт всё больше и больше памяти... Что делать?
С уважением,
Павел Васёв
-------------
LineAct — автоматическое создание Вашего сайта под ключ: дизайн, хостинг, online cms, хранилище файлов — стоит всего 6000 р...
Re: утечка в VariantArray
От: vav Россия  
Дата: 25.03.02 04:37
Оценка:
Здравствуйте Contact, Вы писали:

C>varCreateArray


VarArrayRedim? Зачем же создавать то..
Re[2]: утечка в VariantArray
От: Аноним  
Дата: 25.03.02 19:57
Оценка:
Здравствуйте vav, Вы писали:

VarArrayRedim работает лишь для первой размерности массива. А если массив двумерен? И на каждой итерации границы должны изменяться. :~|
Re[3]: утечка в VariantArray
От: Contact Россия http://www.lact.ru
Дата: 25.03.02 20:01
Оценка:
То бишь это не аноним был, это я. [глюк] Действительно _redim не поможет.
С уважением,
Павел Васёв
-------------
LineAct — автоматическое создание Вашего сайта под ключ: дизайн, хостинг, online cms, хранилище файлов — стоит всего 6000 р...
Re: утечка в VariantArray
От: Contact Россия http://www.lact.ru
Дата: 26.03.02 17:21
Оценка:
Люди! Неужто все юзатели оного спокойно живут, не зная как с этим бороться???
С уважением,
Павел Васёв
-------------
LineAct — автоматическое создание Вашего сайта под ключ: дизайн, хостинг, online cms, хранилище файлов — стоит всего 6000 р...
Re[2]: утечка в VariantArray
От: ray-j Украина http://www.livejournal.com/~1000turov/
Дата: 26.03.02 19:38
Оценка:
Здравствуйте Contact, Вы писали:

C>Люди! Неужто все юзатели оного спокойно живут, не зная как с этим бороться???


попробуй
v := Null
Re[3]: утечка в VariantArray
От: vav Россия  
Дата: 27.03.02 02:30
Оценка:
А>VarArrayRedim работает лишь для первой размерности массива. А если массив двумерен? И на каждой итерации границы должны изменяться. :~|

А не знаешь как из двухмерного сделать простой? К тому же есть еще и динамические массивы, они могут быть и многомерными.
Re[4]: да уж...
От: Contact Россия http://www.lact.ru
Дата: 27.03.02 03:00
Оценка:
Здравствуйте vav, Вы писали:

А>>VarArrayRedim работает лишь для первой размерности массива. А если массив двумерен? И на каждой итерации границы должны изменяться. :~|


vav>А не знаешь как из двухмерного сделать простой? К тому же есть еще и динамические массивы, они могут быть и многомерными.


Знаю. Но размерность, границы массива и его variant'овость обусловлены тем, что затем он уходит в activex-конрол как параметр, и этот activex на основе его размерности и работает по разному...

Кстати, у людей могут возникнуть еще предложения, я их сразу отсеку.
(1) vaLockArray & vaUnlockArray присутствуют и парны.
(2) Даже если отрубать передачу массива в activex, то утечка всё равно есть. То есть это наш баг, а не его.
С уважением,
Павел Васёв
-------------
LineAct — автоматическое создание Вашего сайта под ключ: дизайн, хостинг, online cms, хранилище файлов — стоит всего 6000 р...
Re: решение
От: Contact Россия http://www.lact.ru
Дата: 29.03.02 14:36
Оценка: 10 (1)
В конце концов установлено, что из найденных доступных способов действует лишь следующий:

uses ActiveX;
...
v := VarArrayCreate( [0,dim[1]-1,0,dim[2]-1],varSingle );
...
SafeArrayDestroy( pointer(TVarData(v).VArray) );
С уважением,
Павел Васёв
-------------
LineAct — автоматическое создание Вашего сайта под ключ: дизайн, хостинг, online cms, хранилище файлов — стоит всего 6000 р...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.