Heute habe ich einen Beitrag auf S8S8 gesehen. Ein Shell -Skript, C -Sprache, C ++, VBS, PHP, Perl, Java und C#, es ist eine Laune aus. Aber nachdem sie ein paar Fotos gelesen haben, waren sie alle nicht für Kinder geeignet.
Vollständiger Programmcode:
// Das Schreiben ist relativ rau, kann aber im Grunde die Download -Funktion erkennen, sodass ich nicht so viel kontrollieren kann.
Einheit Getmm;
Schnittstelle
Verwendung
Fenster, Nachrichten, Systeme, Varianten, Klassen, Grafiken, Steuerelemente, Formulare,
Dialoge, Stdctrls, idbasecomponent, idComponent, idtcpConnection,
IDTCPCLIENT, IDHTTP;
Const
Url = 'http: //www.sergeaura.net/tgp/';
Offi = 192;
Offj = 16; // die maximale Anzahl von Bildern in jedem Verzeichnis
girlpic = 'c:/girlpic/';
// Thread -Klasse
Typ
Tgetmm = class (tThread)
Geschützt
Fmmurl: String;
FdestPath: String;
FSUBJ: String;
Prozedur ausführen; überschreiben;
öffentlich
Konstruktor erstellen (mmurl, destpath, subj: string);
Ende;
Typ
Tform1 = Klasse (tform)
Button1: Tbutton;
Button2: Tbutton;
Memo1: tmemo;
Idhttp1: Tidhttp;
CheckBox1: Tcheckbox;
PROCEDURE Taste1Click (Absender: Tobject);
PROCEDURE Button2Click (Absender: Tobject);
Privat
{Private Deklarationen}
RGetmm: Thread;
Prozedur GetMmThread (Mmurl, Destpath, Subj: String);
öffentlich
{Öffentliche Erklärungen}
Ende;
var
Form1: tform1;
Durchführung
{$ R *.dfm}
// Download -Prozess
procedure tform1.button1click (Absender: tobject);
var
Ich, J: Ganzzahl;
Subi, subj, cururl, destpath: string;
strm: tmemorystream;
Beginnen
memo1.lines.clear;
// Erstellen Sie ein Verzeichnis
Wenn nicht Verzeichnis (Girlpic) dann
Mkdir (Girlpic);
versuchen
strm: = tmemorystream.create;
für i: = 1 to offi tun
Beginnen
für J: = 1 bis Offj tun
Beginnen
if (i <10) dann
Subi: = '00'+inttostr (i)
sonst wenn (i> 9) und (i <100) dann
Subi: = '0'+inttostr (i)
sonst subi: = inttostr (i);
if (j> 9) dann
Subj: = inttostr (j)
sonst subj: = '0'+inttoStr (j);
Cururl: = url+subi+'/bilder/';
Destpath: = girlpic+subi+'/';
Wenn nicht DirectoryExists (Destpath), dann dann
Erzwungene Aktien (Destpath);
// Threads verwenden, die Geschwindigkeit kann um mehr als n -mal erhöht werden
Wenn Checkbox1.Conted dann
Beginnen
GetMmThread (Cururl, Destpath, SubJ);
Schlaf (500);
Ende sonst
// Es werden keine Threads verwendet
Beginnen
versuchen
strm.clear;
Idhttp1.get (cururl+subj+'. Jpg', strm);
strm.savetofile (destpath+subj+'. jpg');
Memo1.lines.add (cururl+'Download ok!');
strm.clear;
Idhttp1.get (cururl+'tn _'+subj+'. Jpg', strm);
strm.savetofile (destpath+'tn _'+subj+'. jpg');
Memo1.lines.add (cururl+'Download ok!');
außer
Memo1.lines.add (cururl+'Download -Fehler!');
Ende;
Ende;
Ende;
Ende;
Memo1.lines.add ('alles ok!');
Endlich
strm.free;
Ende;
Ende;
procedure tform1.button2click (Absender: tobject);
Beginnen
Schließen;
Ende;
{Tgetmm}
Konstruktor tgetMm.create (mmurl, destpath, subj: string);
Beginnen
Fmmurl: = mmurl;
FdestPath: = destpath;
Fsubj: = subj;
erbelt erstellen (falsch);
Ende;
procedure tgetMm.execute;
var
strm: tmemorystream;
IDGEMMM: TIDHTTP;
Destfile: String;
Beginnen
versuchen
strm: = tmemorystream.create;
IDGETMM: = TIDHTTP.CREATE (NIL);
versuchen
Destfile: = fdestPath+fsubj+'. Jpg';
Wenn nicht Dateiexisten (destfile), dann dann
Beginnen
strm.clear;
IdgetMm.get (fmmurl+fsubj+'. Jpg', strm);
strm.savetofile (destfile);
Ende;
Destfile: = fdestPath+'tn _'+fsubj+'. Jpg';
Wenn nicht Dateiexisten (destfile), dann dann
Beginnen
strm.clear;
IdgetMm.get (fmmurl+'tn _'+fsubj+'. Jpg', strm);
strm.savetofile (destfile);
Ende;
außer
Ende;
Endlich
strm.free;
IdgetMm.free;
Ende;
Ende;
procedure tform1.getMMMThread (Mmurl, destpath, subj: string);
Beginnen
RGetmm: = tgetMm.create (Mmurl, destpath, subj);
Ende;
Ende.