Guest User

monik

a guest
Jan 25th, 2014
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Delphi 3.40 KB | None | 0 0
  1. unit Unit1;
  2. interface
  3. uses
  4. Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  5. Vcl.Controls, Vcl.Forms, Vcl.Dialogs, sSkinManager, Vcl.StdCtrls, Vcl.ExtCtrls,
  6. sEdit, Vcl.Buttons, sBitBtn, sLabel, sSpinEdit, sDialogs, httpsend, SyncObjs, shellapi;
  7. type
  8. TForm1 = class(TForm)
  9. sSkinManager1: TsSkinManager;
  10. sEdit1: TsEdit;
  11. sLabel1: TsLabel;
  12. sBitBtn1: TsBitBtn;
  13. sBitBtn2: TsBitBtn;
  14. sLabel2: TsLabel;
  15. sLabel3: TsLabel;
  16. sOpenDialog1: TsOpenDialog;
  17. sLabel4: TsLabel;
  18. sLabel5: TsLabel;
  19. sSpinEdit1: TsSpinEdit;
  20. sWebLabel1: TsWebLabel;
  21. procedure sBitBtn1Click(Sender: TObject);
  22. procedure sBitBtn2Click(Sender: TObject);
  23. procedure sWebLabel1Click(Sender: TObject);
  24. private
  25. { Private declarations }
  26. public
  27. { Public declarations }
  28. end;
  29. thread = class(TThread)
  30. private
  31. rez: integer;
  32. public
  33. protected
  34. procedure Execute; override;
  35. procedure analiz;
  36. end;
  37. var
  38. Form1: TForm1;
  39. proxy: TStringList;
  40. oct: integer;
  41. stream: TStringStream;
  42. ipp: integer;
  43. cs: TCriticalSection;
  44. work: boolean;
  45. error, goods: integer;
  46. site: string;
  47. implementation
  48. {$R *.dfm}
  49. procedure TForm1.sBitBtn1Click(Sender: TObject);
  50. begin
  51. proxy:=TStringList.Create;
  52. if sOpenDialog1.Execute then
  53. begin
  54. proxy.Clear;
  55. proxy.LoadFromFile(sopendialog1.FileName);
  56. oct:=proxy.Count;
  57. slabel4.Caption:='Осталось: '+IntToStr(oct);
  58. End;
  59. end;
  60. procedure TForm1.sBitBtn2Click(Sender: TObject);
  61. function Pars(T_, ForS, _T: string): string;
  62. var a, b:integer;
  63. begin
  64. Result := '';
  65. if (T_='') or (ForS='') or (_T='') then Exit;
  66. a:=Pos(T_, ForS);
  67. if a=0 then Exit else a:=a+Length(T_);
  68. ForS:=Copy(ForS, a, Length(ForS)-a+1);
  69. b:=Pos(_T, ForS);
  70. if b>0 then
  71. Result:=Copy(ForS, 1, b - 1);
  72. end;
  73. var
  74. i:integer;
  75. sernum : string;
  76. begin
  77. sernum:=pars('serv-',sedit1.Text,'/');
  78. site:=pars('http://',sedit1.Text,'/serv');
  79. ipp:=-1;
  80. work:=true;
  81. error:=0;
  82. goods:=0;
  83. cs:=TCriticalSection.Create;
  84. stream:=TStringStream.Create;
  85. stream.WriteString('id='+sernum);
  86. for I := 0 to sspinedit1.Value-1 do
  87. with thread.Create(True) do
  88. begin
  89. Priority:=tpNormal;
  90. FreeOnTerminate:=True;
  91. Resume;
  92. end;
  93. end;
  94. procedure TForm1.sWebLabel1Click(Sender: TObject);
  95. begin
  96. ShellExecute(0, 'open', 'http://forum.coders-community.ru/', nil, nil, SW_SHOW);
  97. end;
  98. { thread }
  99. procedure thread.analiz;
  100. begin
  101. case rez of
  102. 0: begin
  103. error:=error+1;
  104. form1.sLabel3.Caption:='Неудач: '+IntToStr(error);
  105. end;
  106. 1: begin
  107. goods:=goods+1;
  108. form1.sLabel2.Caption:='Накручено: '+IntToStr(goods);
  109. end;
  110. end;
  111. oct:=oct-1;
  112. form1.sLabel4.Caption:='Осталось: '+intToStr(oct);
  113. end;
  114. procedure thread.Execute;
  115. var
  116. httpsend: THTTPSend;
  117. str, prip, prprot, prs: string;
  118. i: integer;
  119. sostring: TStringList;
  120. begin
  121. while work do begin
  122. if ipp<proxy.Count then begin
  123. cs.Enter;
  124. ipp:=ipp+1;
  125. Str := proxy[ipp];
  126. i := Pos(':', Str);
  127. prip := Copy(Str, 1, i - 1);
  128. prprot := Copy(Str, i + 1, Length(Str));
  129. cs.Leave;
  130. httpsend:=THTTPSend.Create;
  131. httpsend.MimeType:='application/x-www-form-urlencoded; charset=UTF-8';
  132. httpsend.document.LoadFromStream(stream);
  133. httpsend.ProxyHost:=prip;
  134. httpsend.ProxyPort:=prprot;
  135. httpsend.Timeout:=10000;
  136. httpsend.HTTPMethod('post','http://'+site+'/up/');
  137. sostring:=TStringList.Create;
  138. sostring.LoadFromStream(httpsend.Document);
  139. prs:=sostring.Text;
  140. sostring.Free;
  141. httpsend.Free;
  142. rez:=0;
  143. if Pos('<status>ok</status>', prs)<>0 then rez:=1;
  144. Synchronize(analiz);
  145. end else work:=false;
  146. end;
  147. end;
  148. end.
Advertisement
Add Comment
Please, Sign In to add comment