Luna
Luna

Где ошибка в коде delphi?

Не работают потоки
TNewThread = class(TThread)
private
s,ip,serv,port:string;
n:integer;
Rez : Integer;
protected
procedure Execute; override;
public
procedure Sync;
constructor Create(CreateSuspended: Boolean);
end;

var
Form1: TForm1;
z:integer=0;
checked:integer=0;
checked1:integer=0;
Work:boolean;
CS:TcriticalSection;
Thread, Acc:integer;
constructor TNewThread.Create(CreateSuspended: Boolean);
begin
inherited Create(CreateSuspended);
end;

procedure TNewThread.Execute;
var
s,ip,serv,port:string;
n:integer;
begin
while Work do
begin
CS.Enter;
Inc(Acc);
if Acc<>Form1.Memo3.Lines.Count then n:=Acc else Work:=false;
CS.Leave;

if Work then
begin
ip:=Form1.Memo3.Lines[n];
serv:=copy(ip,1,pos(':',ip)-1);
port:=copy(ip,pos(':',ip)+1,length(ip));

try
Form1.IdHTTP1.ProxyParams.ProxyServer:=serv;
Form1.IdHTTP1.ProxyParams.ProxyPort:=StrToInt(port);
Form1.IdHTTP1.ReadTimeout:=StrToInt(Form4.Edit1.text)*1000;
s:=Form1.idhttp1.get('[ссылка заблокирована по решению администрации проекта]. ru/xxxxx_xx/');
if Pos('', s) <> 0 then
begin
rez:=1
end
else
except
begin
rez:=0;
end;
end;
checked:=checked+1;
Synchronize(Sync);
end;
end;

dec(Thread);
if Thread=0 then ShowMessage('OK');
end;

procedure TNewThread.Sync;
begin
case Rez of
0:begin
Form1.memo5.lines.Add(ip);
Form1.Label5.caption:='UnHappy ['+IntToStr(Form1.Memo5.Lines.Count)+' øò.]';
end;
1:begin
Form1.memo2.lines.Add(ip);
Form1.Label2.caption:='Happy ['+IntToStr(Form1.Memo2.Lines.Count)+' øò.]'
end;
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
var
s,ip,serv,port:string;
n:integer;
var frm : TForm4;
begin
n:=0;
if Memo3.Lines.Count=0 then
begin
showmessage('Âû íå ïðîâåëè ïðîâåðêó ïî àëãîðèòìó!'); exit;
end
else
begin
frm := TForm4.Create(self);
frm.ShowModal;
frm.Free;
Gauge1.MaxValue:=Memo3.Lines.Count;
Gauge1.Progress:=0;
Acc:=-1;
work:=true;
for Thread:=1 to strtoint(Form4.Edit2.Text) do
TNewThread.Create(false);
Thread:=strtoint(Form4.Edit2.Text);
end;
end;

скрин с ошибкой
ssmaker. ru/18de1ccf.jpg

ДМ
Даниял Маккаев

Ошибка в том что ты пытаешься залезть в несуществующею память (0x0000000). Так как я не дельфи программист - глаза просто по коду разбегаются. Насколько я понял, Ты инициализируешь класс потока, так? Честно говоря не понимаю смысла, не проще воспользоваться функцией CreateThread().
Вообщем обратите внимания на указатели на класс, в основном проблема бывает в них. И кстати для создания потока нужна функция DWORD WINAPI(С++ вариант).

Похожие вопросы
Ошибка в коде delphi
Ошибка в коде (Delphi 7) - 2
Ошибка в коде (Delphi 7).
Delphi, помогите с кодом
Вопрос по Delphi, помогите найти ошибку в участке кода
Вопрос по Delphi, помогите найти ошибку в участке коде
Помогите с кодом Delphi
Помогите мне с кодом по Delphi.
помогите разобрать ошибки в коде delphi я незнаю что не так
В чем ошибка? Delphi