Форум: "Прочее";
Текущий архив: 2009.08.02;
Скачать: [xml.tar.bz2];
ВнизАльтернатива Indy? (D 2007) Найти похожие ветки
← →
Cobalt © (2009-04-08 13:00) [0]Понадобилось скачивать/заливать файлы на ftp.
первая мысль была - возьму Indy. У них еще удобный класс IdURI, распарсивающий адрес на протокол-юзер:пароль@сервер-порт-путь
А потом включил
ReportMemoryLeaksOnShutdown := true;
И вылезли утечки памяти.
а требования к утилите жесткие.
Подскажите, какие есть еще компоненты или библиотеки для инета.
Не хочется изучать с нуля WinInet, и ручками писать все заново...
← →
DVM © (2009-04-08 13:07) [1]
> А потом включил
> ReportMemoryLeaksOnShutdown := true;
> И вылезли утечки памяти.
> а требования к утилите жесткие.
Текст сюда приведи сообщения об утечках. Его можно скопировать из MessageBox.
Нет там утечек (по крайней мере пока не обнаружено). Там кое что не освобождается при закрытии программы явно, но это роли не играет. т.к. будет прибито системой. В процессе работы утечек нет.
Дело в том. что там в каком то модуле в секции initialization что-то создается, а в finalization оно не уничтожается по какой то причине.
← →
Rouse_ © (2009-04-08 13:10) [2]
> Нет там утечек (по крайней мере пока не обнаружено).
Есть - новый проект, кладем на форму idFTP, запускаем, закрываем и читаем:---------------------------
Unexpected Memory Leak
---------------------------
An unexpected memory leak has occurred. The unexpected small block leaks are:
1 - 12 bytes: TIdThreadSafeInteger x 1
21 - 28 bytes: TIdCriticalSection x 2
---------------------------
OK
---------------------------
← →
Тимохов_ (2009-04-08 13:11) [3]wininet
← →
DVM © (2009-04-08 13:12) [4]
> Rouse_ © (08.04.09 13:10) [2]
вот об этом я и писал
> Дело в том. что там в каком то модуле в секции initialization
> что-то создается, а в finalization оно не уничтожается по
> какой то причине.
← →
Rouse_ © (2009-04-08 13:12) [5]
> DVM © (08.04.09 13:12) [4]
А это теперь не мемликом называется? :)
← →
DVM © (2009-04-08 13:12) [6]
> Rouse_ © (08.04.09 13:10) [2]
количество неосвобожденных объектов не растет в процессе работы программы
← →
Rouse_ © (2009-04-08 13:13) [7]Не важно - достаточно и этих двух.
← →
DVM © (2009-04-08 13:14) [8]
> Rouse_ © (08.04.09 13:12) [5]
> А это теперь не мемликом называется? :)
Любой проект на Delphi в MemProof покажет разного рода проблемы и такие же утечки. Но они разовые, на выходе не освобождаются объекты.
Плохо конечно. но не критично.
← →
Rouse_ © (2009-04-08 13:20) [9]
> Любой проект на Delphi в MemProof покажет разного рода проблемы
> и такие же утечки. Но они разовые, на выходе не освобождаются
> объекты.
Да вроде не кажет, тьху-тьху :)
← →
DVM © (2009-04-08 13:24) [10]
> Rouse_ © (08.04.09 13:20) [9]
Проверил? А у меня кажет, что я делаю неправильно, абсолютно пустой проект, никаких левых компонентов для делфи нет, форма пустая:
Virtual Memory 02440000 4096 VirtualAlloc(00000000,4096,4096,64)
Текст сообщения оттуда не копируется, но там говорится, что память выделена с пом VirtualAlloc но не освобождена с пом VirtualFree
← →
Rouse_ © (2009-04-08 13:27) [11]Дельфя какая?
← →
DVM © (2009-04-08 13:30) [12]Delphi 7
MemProof 0.9.4.8
Вот подробнее из лога MemProof-а
1 Virtual Memory 02470000 4096 VirtualAlloc(00000000,4096,4096,64)
00421A02 C:\1\Project1.exe
00472A91 C:\1\Project1.exe
004728DD C:\1\Project1.exe
0045FAFF C:\1\Project1.exe
0045FC73 C:\1\Project1.exe
00403C33 C:\1\Project1.exe
00403C9A C:\1\Project1.exe
7C817062 RegisterWaitForInputIdle I:\WINDOWS\system32\kernel32.dll
← →
DVM © (2009-04-08 13:32) [13]
> Rouse_ © (08.04.09 13:27) [11]
В D2007 тоже самое
← →
Игорь Шевченко © (2009-04-08 13:36) [14]Internet Professional - оно стало бесплатным
← →
Rouse_ © (2009-04-08 13:41) [15]
> В D2007 тоже самое
Угу, вижу...
Орет на MakeObjectInstance, я сначала на консоли протестил...
← →
Сергей М. © (2009-04-08 14:00) [16]{$DEFINE IDFREEONFINAL} при сборке Инди - и всех делов, и утечки как не бывало
← →
pasha_golub © (2009-04-08 15:25) [17]
> Игорь Шевченко © (08.04.09 13:36) [14]
>
> Internet Professional - оно стало бесплатным
Линку можно?
← →
Cobalt © (2009-04-08 15:45) [18]Обновился до 10.2.3 - всё ушло
хотя пришлось всё ручками перекомпилировать, нет груп-проекта под 11-ю Дельфю :-(
← →
axis_of_evil © (2009-04-08 23:07) [19]ICS?
← →
Cobalt © (2009-04-08 23:24) [20]
> axis_of_evil © (08.04.09 23:07) [19]
>
> ICS?
А там есть аналог IdURI?
даешь ей на вход URI, и он его парсит на всё-всё-всё?
Я понимаю, что самому написать недолго, интересует сам факт наличия многочисленных удобств.
← →
DVM © (2009-04-09 00:17) [21]
> Cobalt © (08.04.09 23:24) [20]
> А там есть аналог IdURI?
Имей в виду ICS сильно отличается от Indy. Идеология совсем другая, к асинхронности еще привыкнуть надо иногда это непросто тому кто привык работать с блокирующим синхронным Indy.
← →
Германн © (2009-04-09 00:38) [22]
> DVM © (09.04.09 00:17) [21]
>
>
> > Cobalt © (08.04.09 23:24) [20]
>
>
> > А там есть аналог IdURI?
>
> Имей в виду ICS сильно отличается от Indy. Идеология совсем
> другая, к асинхронности еще привыкнуть надо
К асинхронности привыкать надо!
Использование синхронных методов работы с устройствами, имеющими встроенные механизмы для асинхронной работы, очень часто мешает нормальному функционированию приложений.
← →
Anatoly Podgoretsky © (2009-04-09 00:50) [23]> Германн (09.04.2009 0:38:22) [22]
У ICS многие методы ходят парами и синхронные, и асинхронные, с сохранением событийной модели.
← →
Германн © (2009-04-09 01:02) [24]
> Anatoly Podgoretsky © (09.04.09 00:50) [23]
>
> > Германн (09.04.2009 0:38:22) [22]
>
> У ICS многие методы ходят парами и синхронные, и асинхронные,
> с сохранением событийной модели.
Не спорю.
Спорю только с отказом от асинхронных методов по причине незнакомства с ними.
← →
Eraser © (2009-04-09 01:33) [25]> [22] Германн © (09.04.09 00:38)
асинхронный режим больше оправдан при потоковой передаче однородных данных и простом протоколе. если протокол хоть немного сложный, то его реализация на асинхронных сокетах станет очень проблематичной.
← →
DVM © (2009-04-09 01:56) [26]
> Eraser © (09.04.09 01:33) [25]
> и простом протоколе
Точно! Я бы сказал еще при единообразном протоколе, в котором сервер и клиент обмениваются единообразными репликами, которые как правило не цепляются одна за другую и последовательность их не сильно важна.
Когда из реплик начинают выстраиваться цепочки асинхронность и эти цепочки крайне сложно увязать между собой.
← →
Германн © (2009-04-09 02:22) [27]
> Eraser © (09.04.09 01:33) [25]
> DVM © (09.04.09 01:56) [26]
>
>
А я разве спорил с вами?
← →
Eraser © (2009-04-09 02:34) [28]> [27] Германн © (09.04.09 02:22)
так и я не спорил. просто упомянул нюанс, а то выходит, что асинхронный режим панацея от всех бед, а синхронный на свалку )
← →
ZeroDivide © (2009-04-09 10:17) [29]Я как-то давно, помню, разбирался в этом вопросе. Эти утечки появляются только при закрытии приложения. В процессе работы Indy - ничего не утекает. Можно не волноваться. И они, в общем, там нужны... за давностью, я не очень помню зачем, но, вроде, там такая ситуация, что корректное освобождение этих объектов без того, чтобы они не попали в отчет о утечках - невозможно. А менеджер памяти Windows один фиг все почистит после смерти процесса. Короче, память не утечет никуда.
← →
Anatoly Podgoretsky © (2009-04-09 11:33) [30]> Германн (09.04.2009 1:02:24) [24]
Не совсем, а для выбора, там где действительно нужна синхронная работа можно выбрать синхронный метод.
И обработать нужные события.
← →
Cobalt © (2009-04-09 15:13) [31]интересно, а с D2009 Indy какой версии идёт?
← →
Eraser © (2009-04-09 15:14) [32]> [31] Cobalt © (09.04.09 15:13)
10, но кстати они его немного совершенствуют все таки. баги правят.
← →
Индеец © (2009-06-03 08:54) [33]Все утечки с Fastmm4 решаются включением в IdCompilerDefines.inc
USEFASTMM4
Страницы: 1 вся ветка
Форум: "Прочее";
Текущий архив: 2009.08.02;
Скачать: [xml.tar.bz2];
Память: 0.53 MB
Время: 0.005 c