Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.02.2014, 14:57   #1
FreeZon
Пользователь
 
Регистрация: 10.01.2014
Сообщений: 33
По умолчанию Ошибка в потоках

Не понимаю что не так? Обьясните пожалуйста как исправить?
http://programmersforum.ru/attachmen...1&d=1392029847
Изображения
Тип файла: jpg Безымянный.jpg (21.3 Кб, 157 просмотров)
FreeZon вне форума Ответить с цитированием
Старый 10.02.2014, 15:00   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

реализации методов есть?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 10.02.2014, 15:06   #3
FreeZon
Пользователь
 
Регистрация: 10.01.2014
Сообщений: 33
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
реализации методов есть?
Вот полный код:

Код:
unit Unit1;

interface

uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, sSkinManager, Vcl.StdCtrls, Vcl.ExtCtrls,
sEdit, Vcl.Buttons, sBitBtn, sLabel, sSpinEdit, sDialogs, httpsend, SyncObjs, shellapi;

type
TForm1 = class(TForm)
sSkinManager1: TsSkinManager;
sEdit1: TsEdit;
sLabel1: TsLabel;
sBitBtn1: TsBitBtn;
sBitBtn2: TsBitBtn;
sLabel2: TsLabel;
sLabel3: TsLabel;
sOpenDialog1: TsOpenDialog;
sLabel4: TsLabel;
sLabel5: TsLabel;
sSpinEdit1: TsSpinEdit;
sWebLabel1: TsWebLabel;
procedure sBitBtn1Click(Sender: TObject);
procedure sBitBtn2Click(Sender: TObject);
procedure sWebLabel1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

thread = class(TThread)
private
rez: integer;
public
protected
procedure Execute; override;
procedure analiz;
end;

var
Form1: TForm1;
proxy: TStringList;
oct: integer;
stream: TStringStream;
ipp: integer;
cs: TCriticalSection;
work: boolean;
error, goods: integer;
site: string;
implementation

{$R *.dfm}

procedure TForm1.sBitBtn1Click(Sender: TObject);
begin
proxy:=TStringList.Create;
if sOpenDialog1.Execute then
begin
proxy.Clear;
proxy.LoadFromFile(sopendialog1.FileName);
oct:=proxy.Count;
slabel4.Caption:='Осталось: '+IntToStr(oct);
End;
end;

procedure TForm1.sBitBtn2Click(Sender: TObject);
function Pars(T_, ForS, _T: string): string;
var a, b:integer;
begin
Result := '';
if (T_='') or (ForS='') or (_T='') then Exit;
a:=Pos(T_, ForS);
if a=0 then Exit else a:=a+Length(T_);
ForS:=Copy(ForS, a, Length(ForS)-a+1);
b:=Pos(_T, ForS);
if b>0 then
Result:=Copy(ForS, 1, b - 1);
end;
var
i:integer;
sernum : string;
begin
sernum:=pars('serv-',sedit1.Text,'/');
site:=pars('http://',sedit1.Text,'/serv');
ipp:=-1;
work:=true;
error:=0;
goods:=0;
cs:=TCriticalSection.Create;
stream:=TStringStream.Create;
stream.WriteString('id='+sernum);
for I := 0 to sspinedit1.Value-1 do
with thread.Create(True) do
begin
Priority:=tpNormal;
FreeOnTerminate:=True;
Resume;
end;
end;

procedure TForm1.sWebLabel1Click(Sender: TObject);
begin
ShellExecute(0, 'open', 'http://forum.coders-community.ru/', nil, nil, SW_SHOW);
end;

{ thread }

procedure thread.analiz;
begin
case rez of
0: begin
error:=error+1;
form1.sLabel3.Caption:='Неудач: '+IntToStr(error);
end;
1: begin
goods:=goods+1;
form1.sLabel2.Caption:='Накручено: '+IntToStr(goods);
end;
end;
oct:=oct-1;
form1.sLabel4.Caption:='Осталось: '+intToStr(oct);
end;

procedure thread.Execute;
var
httpsend: THTTPSend;
str, prip, prprot, prs: string;
i: integer;
sostring: TStringList;
begin
while work do begin
if ipp<proxy.Count then begin
cs.Enter;
ipp:=ipp+1;
Str := proxy[ipp];
i := Pos(':', Str);
prip := Copy(Str, 1, i - 1);
prprot := Copy(Str, i + 1, Length(Str));
cs.Leave;
httpsend:=THTTPSend.Create;
httpsend.MimeType:='application/x-www-form-urlencoded; charset=UTF-8';
httpsend.document.LoadFromStream(stream);
httpsend.ProxyHost:=prip;
httpsend.ProxyPort:=prprot;
httpsend.Timeout:=10000;
httpsend.HTTPMethod('post','http://'+site+'/up/');
sostring:=TStringList.Create;
sostring.LoadFromStream(httpsend.Document);
prs:=sostring.Text;
sostring.Free;
httpsend.Free;
rez:=0;
if Pos('<status>ok</status>', prs)<>0 then rez:=1;
Synchronize(analiz);
end else work:=false;
end;
end;

end.
FreeZon вне форума Ответить с цитированием
Старый 10.02.2014, 17:34   #4
doktor255
Заблокирован
 
Регистрация: 31.03.2011
Сообщений: 976
По умолчанию

Идёт конфликт с кодом, который ты не выложил. Скорее всего из за того, что объявление класса совпадает по имени с самим классом, и наверное объявляется где-то ещё.

Последний раз редактировалось doktor255; 10.02.2014 в 17:39.
doktor255 вне форума Ответить с цитированием
Старый 10.02.2014, 17:36   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
public
protected
может public стоит убрать?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 10.02.2014, 17:39   #6
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

порядок пофигу если правильно помню.
Человек_Борща вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Прокси в потоках admin22 Общие вопросы Delphi 7 02.01.2013 12:05
Delphi. 2 графика в потоках. Не знаю, где ошибка Erlotaza Помощь студентам 6 26.04.2012 20:24
Canvas в потоках demigod82 Общие вопросы Delphi 9 05.03.2012 08:51
Ошибка в потоках (Access violation at address) designer999 Общие вопросы Delphi 9 25.08.2011 16:04
синхронизация в потоках xrob Общие вопросы Delphi 8 15.11.2010 17:25