не могу понять почему в конце работы софта ошибка вылетает,пишет что,что то с памятью,но опыта не хватает найти в чем проблема
суть написания сортировщика баз многопоточного,это кусок кода,а остальное я удалил чтоб легче было понять проблему,самое главное что работает очень быстро,но в конце краш,в чем может быть проблема?
код ошибки
"Exception EinvalidPointer in module Project.exe at 00002ABB.
Invalid pointer operation."
вот код
procedure Potok.Execute;
begin
while working do
begin
try
CS.Enter;
Inc(num);
if num < Filez.Count then
num_thred := num
else working := false;
finally
CS.Leave;
end;
if pos('@mail.ru',LowerCase(Filez.Strings[num_thred]))<> 0 then
begin
mail_D := mail_D + Filez.Strings[num_thred] + #13#10 ;
rez := 1;
Inc(chez);
Sleep(3);
Synchronize(Synhz);
end
else if pos('@bk.ru',LowerCase(Filez.Strings[num_thred]))<>0 then
begin
mail_D := mail_D + Filez.Strings[num_thred] + #13#10;
rez := 1;
Inc(chez);
Sleep(3);
Synchronize(Synhz);
end
else if pos('@list.ru',LowerCase(Filez.Strings[num_thred]))<>0 then
begin
mail_D := mail_D + Filez.Strings[num_thred] + #13#10;
rez := 1;
Inc(chez);
Sleep(3);
Synchronize(Synhz);
end
else if pos('@inbox',LowerCase(Filez.Strings[num_thred]))<>0 then
begin
mail_D := mail_D + Filez.Strings[num_thred] + #13#10;
rez := 1;
Inc(chez);
Sleep(3);
Synchronize(Synhz);
end else begin
ether_D := ether_D + Filez.Strings[num_thred] + #13#10;
rez := 2;
Inc(chez2);
Sleep(3);
Synchronize(Synhz);
end;
end;
end;
/////////////////////////////////////////////////////////////////
procedure Potok.Synhz;
begin
case rez of
1: Form1.Label4.Caption := IntToStr(chez);
2: Form1.Label12.Caption := IntToStr(chez2);
end;
end;
суть написания сортировщика баз многопоточного,это кусок кода,а остальное я удалил чтоб легче было понять проблему,самое главное что работает очень быстро,но в конце краш,в чем может быть проблема?
код ошибки
"Exception EinvalidPointer in module Project.exe at 00002ABB.
Invalid pointer operation."
вот код
procedure Potok.Execute;
begin
while working do
begin
try
CS.Enter;
Inc(num);
if num < Filez.Count then
num_thred := num
else working := false;
finally
CS.Leave;
end;
if pos('@mail.ru',LowerCase(Filez.Strings[num_thred]))<> 0 then
begin
mail_D := mail_D + Filez.Strings[num_thred] + #13#10 ;
rez := 1;
Inc(chez);
Sleep(3);
Synchronize(Synhz);
end
else if pos('@bk.ru',LowerCase(Filez.Strings[num_thred]))<>0 then
begin
mail_D := mail_D + Filez.Strings[num_thred] + #13#10;
rez := 1;
Inc(chez);
Sleep(3);
Synchronize(Synhz);
end
else if pos('@list.ru',LowerCase(Filez.Strings[num_thred]))<>0 then
begin
mail_D := mail_D + Filez.Strings[num_thred] + #13#10;
rez := 1;
Inc(chez);
Sleep(3);
Synchronize(Synhz);
end
else if pos('@inbox',LowerCase(Filez.Strings[num_thred]))<>0 then
begin
mail_D := mail_D + Filez.Strings[num_thred] + #13#10;
rez := 1;
Inc(chez);
Sleep(3);
Synchronize(Synhz);
end else begin
ether_D := ether_D + Filez.Strings[num_thred] + #13#10;
rez := 2;
Inc(chez2);
Sleep(3);
Synchronize(Synhz);
end;
end;
end;
/////////////////////////////////////////////////////////////////
procedure Potok.Synhz;
begin
case rez of
1: Form1.Label4.Caption := IntToStr(chez);
2: Form1.Label12.Caption := IntToStr(chez2);
end;
end;