Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
if Task.Status = tsReady then // Ожидание закачки
Item.ImageIndex := 0;
if Task.Status = tsQueue then // В очереди
Item.ImageIndex := 1;
if Task.Status = tsError then // Ошибка завершена
Item.ImageIndex := 2;
if Task.Status = tsErroring then // Ошибка не завершена
Item.ImageIndex := 2;
if Task.Status = tsLoading then // Закачка
Item.ImageIndex := 3;
if Task.Status = tsStoping then // Остановка
Item.ImageIndex := 4;
if Task.Status = tsStoped then // Пауза
Item.ImageIndex := 5;
if Task.Status = tsLoad then // Закачено
Item.ImageIndex := 6;
if Task.Status = tsGetUrl then // Получение ссылки
Item.ImageIndex := 7;
if Task.Status = tsProcessing then // Поиск
Item.ImageIndex := 8;
if Task.Status = tsSeeding then // Раздача
Item.ImageIndex := 9;
if Task.Status = tsBittorrentMagnetDiscovery then // Обработка магнет
Item.ImageIndex := 10;
if (Task.Status = tsDelete) or (Task.Status = tsDeleted) then // Удален
Item.ImageIndex := 11;
У вашей логики две проблемы: первая — сложнее != невозможно. Даже «сложнее» вызывает сомнения (не уж то делфи настолько не приспособлен к работе с сетью и файловой системой?).
Второе — вы ничего данным примером не показали. Кто знает, как внутри эта библиотека устроена кроме вас? Может там часть написана на другом языке, а на делфи только обертка?
Какое-то ненаучное доказательство несуществующей проблемы.
Уже не первый раз убеждаешься в том, что все нервные крики в сторону Delphi – это просто бред и комплексы фанатов С++ (данная фраза проверена этическим комитетом; выдана справка о том, что провокационной она не является, будучи написанной автором в состоянии аффекта – Прим. ред). На Delphi можно написать практически любую программу, будь то компактная хакерская тулза или продвинутая программа для работы с БД.
Для первой части статьи я писал пример на моем любимом Delphi, но сегодня мне предстоит ему изменить и воспользоваться великим и могучим C#. Многие Delphi-ненавистники возрадуются и громко закричат: «Неужели на Delphi нельзя создать полноценный клиент?». Вовсе нет, на Delphi можно написать практически любое приложение и торрент-клиент – не исключение, но есть одно но. Как ты понимаешь, протокол BitTorrent – это не хухры-мухры и просто так реализовать его в приложении не удастся. В настоящее время для дельфина не существует ни одной нормальной библиотеки/модуля для упрощения взаимодействия с этим протоколом. Все те библиотеки, которые мне попадались на глаза, морально устарели и требовали переписывания до 60% кода.
Не думал что делфисты, в массе своей, имеют настолько низкую квалификацию. Что они настолько не знают инструмент которым пользуются, и его возможности, что могут из подобных вот статеек сделать такие вот выводы.
PS. И да, обзор архитектуры и особенностей библиотеки для торрента, писанной на Delphi был бы намного интересней, чем статья про лепления гуйни к готовой уже библиотеки. Уж что лепка гуйни на делфи возможна, думаю, знают даже делфисты.
Кроме того, у библиотеки BTService имеются возможности написания торрент-клиента и на других ЯП.
Начав разбираться в исходниках Ares Galaxy, выяснил, что многие операции выполняются в одном потоке, что в результате кратковременно останавливает процесс закачки всех торрентов в списке. Потому я решил исправить недостатки и вынес процедуры, которые замедляют выполнение кода, в отдельные потоки.
Мне кажется, что гораздо интереснее было бы здесь привести участки кода библиотеки, как соединяетесь с пирами и прочее. Как подключить библиотеку, думаю, понять не очень сложно.
Есть такое ощущение, что это свойство dll, не зависить от языка, на котором его подключают.
Вы уж определитесь, писалась она вами или же только правилась? Я ни в коем случае не сомневаюсь в ваших способностях, может в делфи заведено не пользоваться switch-case, но как-то сложно поверить в высокое качество библиотеки после увиденного в ваших примерах, уж простите.
Из реально не решённых проблем современности в торрентостроении можно отметить одну весьма актуальную:
есть папка с .torrent файлами и папка с файлами (и подпапками) скачанными, и нужно чтобы торрент клиент сам мог сохрать торрент файлы а потом найти, прочекать и подхватить все файлы из помойки на диске.
Проблема клиента на дельфи и как он работает с комбобоксом не интересуют современное человечество :)
Что дельфи умеет сеть было известно ещё году в 2003, когда спамеры заюзали инди либу для своих спам ботов. Кажется кип на дельфях был писан.
try try BTCreateTorrent.StopCreateTorrentThread(Id); // остановка создания торрент-файла except end; finally LeaveCriticalSection(TorrentSection); end;
Это что за конструкция?
Автор понимает, как работает try / finally / except?
try
BTCreateTorrent.StopCreateTorrentThread(Id); // остановка создания торрент-файла
finally
LeaveCriticalSection(TorrentSection);
end;
Программируем BitTorrent-клиент. Чистый Delphi