for i := 0 to list.Count-1 do
begin
form5.Caption:='ewrew';
s:=idhttp.Get(list[z]);
RegExp.InputString :=s;
RegExp.Expression := '342432r":"(.*?)"';
if RegExp.Exec then
if strtoint(RegExp.Match[1]) <= strtoint(form5.edit3.text) then
begin
form5.listbox1.items.add(list[z]+' '+regexp.Match[1]);
end;
end;
Вставляю этот код в поток, а он не работает В чем может быть проблема?
unit MyThread;
...
var s: string;
...
procedure MyThread1.Execute;
begin
try
s:=idhttp.Get(list[z]);
Synchronize(MySynchCaption);
if RegExp.Exec then
if strtoint(RegExp.Match[1]) <= strtoint(form5.edit3.text) then begin
Synchronize(MySynchListBox);
end;
except
ShowMessame('Error: Thread.Execute');
end;
end;
procedure MyThread1.MySynchCaption;
begin
if Length(s)>0 then begin // длина строки больше 0 ?
RegExp.InputString := s;
RegExp.Expression := '342432r":"(.*?)"';
end;
end;
procedure MyThread1.MySynchListBox;
begin
try
form5.listbox1.items.add(list[z]+' '+regexp.Match[1]);
except
ShowMessame('Error: Thread.MySynchListBox');
end;
end;
...
Отдельный поток делается для того, чтобы основной поток, отвечающий за перерисовку интерфейса в том числе, не занимать рутинными операциями, что может повлечь зависание проги во время рутины.
Тело вторичного потока реализуется в юните вторичного потока в процедуре Execute, в ней происходит рутиная работа.
Чтобы сделать изменения в интерфейсе, делают синхронизацию, реализуемую в отдельных процедурах, в нашем случае это MySynchCaption - тут обновляется значение компонента RegExp, а также процедура MySynchListBox - тут обновляется значение какого-то листбокса.
Представь, что в потоке ты что-то вычисляешь, а результаты его работы отдельными процедурами показываешь, т.е тут как бы 2 части:
1-вычисляет в памяти,
2 - выводит/обновляет значения для пользователя.
Мануал:
[Ссылки могут видеть только зарегистрированные пользователи. ]
[Ссылки могут видеть только зарегистрированные пользователи. ]
Также у потоков есть свои приоритеты + нюансы в свойствах жизни потока. той статьи выше тебе будет достаточно. Если что - гугл.
надеюсь, не запутал
________________
ʕ•ᴥ•ʔ Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).