Форум программистов, компьютерный форум, киберфорум
Наши страницы
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
Djuise
0 / 0 / 0
Регистрация: 30.07.2014
Сообщений: 15
1

Delphi. Ошибка в потоке

01.05.2015, 19:37. Просмотров 1288. Ответов 10
Метки нет (Все метки)

Здравствуйте. Такая штука. Не могу понять в чем проблема. В программе создаю поток, и все норм. Но если я ввожу проверку if Potok.Terminated then break; то про начале работы потоков выбивает ошибку и при нажатии на break меня отправляет на строку приведенную выше, и снизу показаны ошибки:
Thread Start: Thread ID: 280. Process Project1.exe (7920)
Thread Start: Thread ID: 148. Process Project1.exe (7920)
Thread Start: Thread ID: 268. Process Project1.exe (7920)
Thread Start: Thread ID: 7496. Process Project1.exe (7920)
First chance exception at $0078F4B3. Exception class $C0000005 with message 'access violation at 0x0078f4b3: read of address 0x0000000e'. Process Project1.exe (7920)

Самое интересное что в другом потоке все работает нормально. Подскажите чего оно ругается? За ранее спасибо!
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.05.2015, 19:37
Ответы с готовыми решениями:

Ошибка в потоке
Задача такая - я хочу в потоке отслеживать какие в данный момент на компьютере...

Ошибка в потоке
procedure TMyThread.Execute; begin response:=send('GET',...

Ошибка при работе в потоке
Писал софт с использованием многопоточности. В процедуре потока Execute...

Ошибка TMyThread.Execute$12$ActRec в потоке
Совершенно не могу понять что это значит и откуда оно взялось. Гуглил.

GDI+. Почему в отдельном потоке картинки сохраняются как белые прямоугольники, а в основном потоке - всё Ок?
Всем привет, делаю функцию уменьшения картинок при помощи библиотеки GDI+, в...

10
FIL
Модератор
3422 / 2556 / 728
Регистрация: 19.09.2012
Сообщений: 7,926
01.05.2015, 19:55 2
Цитата Сообщение от Djuise Посмотреть сообщение
если я ввожу проверку
Куда ты ее вводишь?
0
Djuise
0 / 0 / 0
Регистрация: 30.07.2014
Сообщений: 15
01.05.2015, 20:14  [ТС] 3
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
procedure MyPotokStart;
begin
MyPotok:=potok.Create(true);
MyPotok.FreeOnTerminate:=true;
MyPotok.Priority:=tpLower;
MyPotok.Resume;
end;
 
procedure potok.Execute;
begin
if AllLinksPotok.Terminated then break;
...
end;
0
FIL
Модератор
3422 / 2556 / 728
Регистрация: 19.09.2012
Сообщений: 7,926
01.05.2015, 20:57 4
И какая связь между MyPotok и AllLinksPotok ?
0
Djuise
0 / 0 / 0
Регистрация: 30.07.2014
Сообщений: 15
02.05.2015, 00:19  [ТС] 5
Ой, сорри, то ошибка здесь, а в коде все верно написано, не AllLinksPotok, а MyPotok.
0
Verevkin
Заблокирован
02.05.2015, 01:01 6
Цитата Сообщение от Djuise Посмотреть сообщение
а в коде все верно написано
показывай, не стесняйся!
0
Djuise
0 / 0 / 0
Регистрация: 30.07.2014
Сообщений: 15
02.05.2015, 01:53  [ТС] 7
Цитата Сообщение от Verevkin Посмотреть сообщение
показывай, не стесняйся!
Да что там показывать. Выше кинул кусок кода, там по сути он так и работает. То есть сначала в процедуре procedure MyPotokStart; задаю некие переменные с которыми работает поток, дальше создаю сам поток
в procedure potok.Execute; выполняются необходимые функции + синхронизация. И все работает, а когда вставляю
Код
if AllLinksPotok.Terminated then break;
то выскакивает ошибка описанная в первом сообщении.
В другом точно таком же потоке, который я создал на основе этого, но изменил тело функции, для обработки другой задачи. В нем все работает никаких проблем нет. Ведь самое интересное что Terminated это просто булевое значение, то есть если я вставляю туда допустим if 1=1 then break то тогда все норм, если вставляю проверку типа if term=true then break, и кнопкой во время работы потока устанавливаю значение в true, ничего не срабатывает(. А когда ставлю проверку terminated то ошибка. Не пойму логики(

Добавлено через 38 минут
Нашел ошибку. все потому что MyPotok: Potok, была прописана дважды, как в глобальных переменных, так и в процедуре создания потока. По этому и ругалось. Это ппц, столько времени убил из-за этого. И чего компилятор не ругался за то, что переменная была объявлена дважды в модуле и в процедуре?(
0
Verevkin
Заблокирован
02.05.2015, 02:05 8
Цитата Сообщение от Djuise Посмотреть сообщение
Это ппц, столько времени убил из-за этого.
ctrl+LMB очень сильно сэкономило бы тебе время.
Цитата Сообщение от Djuise Посмотреть сообщение
И чего компилятор не ругался за то, что переменная была объявлена дважды в модуле и в процедуре?(
а он и не должен, это переменные с разными областями видимости. в этом случае приоритет у локальной переменной. надо было дядю послушаться:
Цитата Сообщение от Verevkin Посмотреть сообщение
показывай, не стесняйся!
а ты постеснялся.
0
northener
пофигист широкого профиля
3429 / 2328 / 631
Регистрация: 15.07.2013
Сообщений: 13,796
02.05.2015, 02:10 9
Цитата Сообщение от Djuise Посмотреть сообщение
И чего компилятор не ругался за то, что переменная была объявлена дважды в модуле и в процедуре?
Это что ж. Компилятор должен кажный раз ругаться, когда я объявляю переменную
Delphi
1
i : Integer;
Из-за того что этих локальных переменных у меня (в прочем и у всех) мало сказать "дофига". Их гораздо больше!
Учебник по Дельфи/Паскалю религия запрещает читать?
0
Verevkin
02.05.2015, 02:16
  #10

Не по теме:

Цитата Сообщение от northener Посмотреть сообщение
Учебник по Дельфи/Паскалю религия запрещает читать?
скорее, гендерная ориентация. :D
таких «neck-пассажиров»
в интернетах – чуть менее, чем все!

0
Djuise
0 / 0 / 0
Регистрация: 30.07.2014
Сообщений: 15
02.05.2015, 12:35  [ТС] 11
Цитата Сообщение от northener Посмотреть сообщение
Это что ж. Компилятор должен кажный раз ругаться, когда я объявляю переменную
Код Delphi
1
i : Integer;
Из-за того что этих локальных переменных у меня (в прочем и у всех) мало сказать "дофига". Их гораздо больше!
Учебник по Дельфи/Паскалю религия запрещает читать?
Нет ну в таком случае никакого конфликта и нет.

Цитата Сообщение от Verevkin Посмотреть сообщение
а он и не должен, это переменные с разными областями видимости. в этом случае приоритет у локальной переменной.
Спасибо!
0
02.05.2015, 12:35
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.05.2015, 12:35

Delphi 7 SAPI ошибка в Delphi XE7
Привет знатоки поиске нашел sapi на delphi 7 работает а Delphi XE7 выдает...

Создание/удаление/изменение файлов в потоке. А так же мониторинг файлов в потоке
Вот задание: имеется заданный каталог, потоки читатели считывают и отображают...

Ошибка в Delphi 7
Объясните пожалуйста причину и ее устранения в Delphi 7. Unit11 изъял из...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru