Сегодня я увидел пост на S8S8. Скрипт оболочки, C, C ++, VBS, PHP, Perl, Java и C#, это прихоть. Но после прочтения нескольких фотографий они все не подходили для детей.
Полный код программы:
// Письмо относительно грубое, но оно может в основном реализовать функцию загрузки, поэтому я не могу так много контролировать.
единица getmm;
интерфейс
Использование
Windows, сообщения, Sysutils, варианты, классы, графика, управления, формы,
Диалоги, stdctrls, idbasecomponent, idcomponent, idtcpconnection,
Idtcpclient, idhttp;
констант
Url = 'http: //www.sergeaura.net/tgp/'; // Адрес веб -сайта загруженного изображения
OFFI = 192; // Количество каталогов
OffJ = 16;
Girlpic = 'c:/Girlpic/';
// класс потоков
тип
Tgetmm = class (tthread)
Защищен
Fmmurl: String;
Fdestpath: String;
FSUBJ: String;
процедура выполнить; переопределить;
публичный
конструктор Create (Mmurl, Destpath, Subj: String);
конец;
тип
Tform1 = class (tform)
Баттон1: Tbutton;
Button2: Tbutton;
Memo1: Tmemo;
Idhttp1: tidhttp;
Fackbox1: Tcheckbox;
процедура Button1click (отправитель: tobject);
процедура Button2click (отправитель: tobject);
Частный
{Частные объявления}
Rgetmm: tthread;
Процедура getMmThread (mmurl, destpath, subj: string);
публичный
{Публичные объявления}
конец;
вар
Форма1: tform1;
Выполнение
{$ R *.dfm}
// процесс загрузки
Процедура tform1.button1click (отправитель: tobject);
вар
я, J: целое число;
Subi, Subj, Cururl, Destpath: String;
Strm: Tmemorystream;
Начинать
memo1.lines.clear;
// Создать каталог
Если не каталогэксекции (Girlpic), то тогда
Mkdir (Girlpic);
пытаться
strm: = tmemorystream.create;
для i: = 1 к Offi Do
Начинать
для j: = 1 к Offj do
Начинать
Если (я <10) тогда
Subi: = '00'+inttoStr (i)
иначе if (i> 9) и (i <100) тогда
Subi: = '0'+inttoStr (i)
else subi: = inttoStr (i);
if (j> 9) тогда
Subj: = inttoStr (j)
else subj: = '0'+inttoStr (j);
Cururl: = url+subi+'/images/';
Destpath: = Girlpic+subi+'/';
Если не каталогэксекции (destpath), то тогда
Уклончики (Destpath);
// Использование потоков, скорость может быть увеличена более чем на n раз
Если Fackbox1. Провернул, тогда
Начинать
Getmmthread (cururl, destpath, subj);
сон (500);
конец еще
// Никаких потоков не используются
Начинать
пытаться
strm.clear;
Idhttp1.get (cururl+subj+'. Jpg', strm);
strm.savetofile (destpath+subj+'. jpg');
Memo1.lines.add (cururl+'Скачать OK!');
strm.clear;
Idhttp1.get (cururl+'tn _'+subj+'. Jpg', strm);
strm.savetofile (destpath+'tn _'+subj+'. jpg');
Memo1.lines.add (cururl+'Скачать OK!');
кроме
Memo1.lines.add (cururl+'ошибка загрузки!');
конец;
конец;
конец;
конец;
Memo1.lines.add ('All Ok!');
Окончательно
strm.free;
конец;
конец;
Процедура tform1.button2click (отправитель: tobject);
Начинать
Закрывать;
конец;
{Tgetmm}
конструктор tgetmm.create (mmurl, destpath, subj: string);
Начинать
Fmmurl: = mmurl;
Fdestpath: = destpath;
Fsubj: = subj;
унаследованное создание (false);
конец;
Процедура tgetmm.execute;
вар
Strm: Tmemorystream;
Idgetmm: tidhttp;
Destfile: String;
Начинать
пытаться
strm: = tmemorystream.create;
Idgetmm: = tidhttp.create (nil);
пытаться
Destfile: = fdestpath+fsubj+'. Jpg';
Если не файловые (destfile), то тогда
Начинать
strm.clear;
Idgetmm.get (fmmurl+fsubj+'. Jpg', strm);
strm.savetofile (destfile);
конец;
Destfile: = fdestpath+'tn _'+fsubj+'. Jpg';
Если не файловые (destfile), то тогда
Начинать
strm.clear;
Idgetmm.get (fmmurl+'tn _'+fsubj+'. Jpg', strm);
strm.savetofile (destfile);
конец;
кроме
конец;
Окончательно
strm.free;
Idgetmm.free;
конец;
конец;
Процедура tform1.getmmthread (mmurl, destpath, subj: string);
Начинать
Rgetmm: = tgetmm.create (mmurl, destpath, subj);
конец;
конец.