Влад Меркулов
Профи
(997),
на голосовании
11 лет назад
Выдаёт ошибку где то в куске кода: procedure TForm1.StartClick(Sender: TObject); var pot:integer; begin off:=false; Start.Enabled:=False; Stop.Enabled:=True; otpravleno:=0; nado:=strtoint(Pisem.Text); if (strtoint(Potoki.Text) >= 1) and (strtoint(Potoki.Text) <= 50) and (strtoint(pisem.text) >= 1) then begin if (otkogo.Text <> '') and (komu.Text <> '') and (tema.Text <> '') and (Pismo.Text <> '') then begin for pot:=1 to strtoint(Potoki.text) do a[pot]:=potok.Create(false); end else MessageDlg('Не заполнено одно из полей информации об отправке сообщений! ', mtWarning, [mbOK, mbOK], 0); end else MessageDlg('Не верно задано количество потоков или количество сообщений', mtWarning, [mbOK, mbOK], 0); end;
procedure potok.Execute; var randchisl, i:integer; HTTP:TidHTTP; begin Form1.Status.Caption:='Отсылается спам'; Form1.CoolTrayIcon1.IconIndex:=2; while nado <> otpravleno do begin if off = true then begin break; Form1.HTTP.Free; Data.Free; off:=false; end; HTTP:= TIdHTTP.Create(nil); HTTP.HandleRedirects:=True; Data:=TStringList.Create; randchisl:=random(1000); Data.Add('From=' +Form1.otkogo.Text); Data.Add('To=' +Form1.komu.Text); Data.Add('Subject='+AnsiToUtf8(Form1.tema.text) +inttostr(randchisl)); Data.Add('Data=' +Form1.Pismo.Lines.Text); HTTP.Post('http://www.bezmani.ru/services/mail/send.php', Data); Data.Free; HTTP.Free; Synchronize(Synchro); Form1.Log.Lines.Add(inttostr(otpravleno)+'-ое сообщение отправлено / Осталось: ' +inttostr(nado-otpravleno)); for i := 1 to nado do Form1.ProgressBar1.Position:=Round(100*otpravleno/nado); end; if (otpravleno = 0) or (otpravleno = nado) then begin Form1.CoolTrayIcon1.IconIndex:=1; Form1.CoolTrayIcon1.ShowBalloonHint('Сообщение о работе Spam Sender', 'Отправка спама успешно завершена! ', bitInfo, 11); Form1.Status.Caption:='Успешно завершено! '; Form1.ProgressBar1.Position:=Round(100*otpravleno/nado); Form1.Log.Lines.Add('Отправка спама успешно завершена! '); Form1.Log.Lines.Add('Отправлено ' +inttostr(otpravleno)+ ' из ' +inttostr(nado)); Synchronize(Enable); Sleep(5000); Form1.CoolTrayIcon1.IconIndex:=3; Form1.Status.Caption:='Ожидание команд'; Form1.ProgressBar1.Position:=0; end; if off = true then begin Form1.CoolTrayIcon1.IconIndex:=0; Form1.CoolTrayIcon1.ShowBalloonHint('Сообщение о работе Spam Sender', 'Отправка спама была отменена! ', bitWarning, 11); Form1.Log.Lines.Add('Отправка спама была приостоновлена пользователем. '); Form1.Log.Lines.Add('Не отправленных писем: ' +inttostr(nado-otpravleno)); Synchronize(Enable); Sleep(5000); Form1.CoolTrayIcon1.IconIndex:=3; Form1.Status.Caption:='Ожидание команд'; Form1.ProgressBar1.Position:=0; end; end;
procedure potok.Synchro; begin otpravleno:=otpravleno+1; end;
procedure potok.Enable; begin Form1.Stop.Enabled:=False; Form1.Start.Enabled:=True; end;
ошибка: delphi raised exception class eaccessviolation with message причем при двух потоках нормально, при выше выбивает не судите за быдлокод, только начинающий
procedure TForm1.StartClick(Sender: TObject);
var pot:integer;
begin
off:=false;
Start.Enabled:=False;
Stop.Enabled:=True;
otpravleno:=0;
nado:=strtoint(Pisem.Text);
if (strtoint(Potoki.Text) >= 1) and (strtoint(Potoki.Text) <= 50) and (strtoint(pisem.text) >= 1) then
begin
if (otkogo.Text <> '') and (komu.Text <> '') and (tema.Text <> '') and (Pismo.Text <> '') then
begin
for pot:=1 to strtoint(Potoki.text) do
a[pot]:=potok.Create(false);
end
else
MessageDlg('Не заполнено одно из полей информации об отправке сообщений! ', mtWarning, [mbOK, mbOK], 0);
end
else
MessageDlg('Не верно задано количество потоков или количество сообщений', mtWarning, [mbOK, mbOK], 0);
end;
procedure potok.Execute;
var randchisl, i:integer;
HTTP:TidHTTP;
begin
Form1.Status.Caption:='Отсылается спам';
Form1.CoolTrayIcon1.IconIndex:=2;
while nado <> otpravleno do
begin
if off = true then
begin
break;
Form1.HTTP.Free;
Data.Free;
off:=false;
end;
HTTP:= TIdHTTP.Create(nil);
HTTP.HandleRedirects:=True;
Data:=TStringList.Create;
randchisl:=random(1000);
Data.Add('From=' +Form1.otkogo.Text);
Data.Add('To=' +Form1.komu.Text);
Data.Add('Subject='+AnsiToUtf8(Form1.tema.text) +inttostr(randchisl));
Data.Add('Data=' +Form1.Pismo.Lines.Text);
HTTP.Post('http://www.bezmani.ru/services/mail/send.php', Data);
Data.Free;
HTTP.Free;
Synchronize(Synchro);
Form1.Log.Lines.Add(inttostr(otpravleno)+'-ое сообщение отправлено / Осталось: ' +inttostr(nado-otpravleno));
for i := 1 to nado do
Form1.ProgressBar1.Position:=Round(100*otpravleno/nado);
end;
if (otpravleno = 0) or (otpravleno = nado) then
begin
Form1.CoolTrayIcon1.IconIndex:=1;
Form1.CoolTrayIcon1.ShowBalloonHint('Сообщение о работе Spam Sender', 'Отправка спама успешно завершена! ', bitInfo, 11);
Form1.Status.Caption:='Успешно завершено! ';
Form1.ProgressBar1.Position:=Round(100*otpravleno/nado);
Form1.Log.Lines.Add('Отправка спама успешно завершена! ');
Form1.Log.Lines.Add('Отправлено ' +inttostr(otpravleno)+ ' из ' +inttostr(nado));
Synchronize(Enable);
Sleep(5000);
Form1.CoolTrayIcon1.IconIndex:=3;
Form1.Status.Caption:='Ожидание команд';
Form1.ProgressBar1.Position:=0;
end;
if off = true then
begin
Form1.CoolTrayIcon1.IconIndex:=0;
Form1.CoolTrayIcon1.ShowBalloonHint('Сообщение о работе Spam Sender', 'Отправка спама была отменена! ', bitWarning, 11);
Form1.Log.Lines.Add('Отправка спама была приостоновлена пользователем. ');
Form1.Log.Lines.Add('Не отправленных писем: ' +inttostr(nado-otpravleno));
Synchronize(Enable);
Sleep(5000);
Form1.CoolTrayIcon1.IconIndex:=3;
Form1.Status.Caption:='Ожидание команд';
Form1.ProgressBar1.Position:=0;
end;
end;
procedure potok.Synchro;
begin
otpravleno:=otpravleno+1;
end;
procedure potok.Enable;
begin
Form1.Stop.Enabled:=False;
Form1.Start.Enabled:=True;
end;
ошибка: delphi raised exception class eaccessviolation with message
причем при двух потоках нормально, при выше выбивает
не судите за быдлокод, только начинающий