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

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

Вернуться   Форум программистов > C/C++ программирование > C++ Builder
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.09.2015, 11:57   #11
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Не все индеские функции
Смитт, хватит пить. Эта функция не относится к INDY
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 18.09.2015, 20:46   #12
HelloWold
Пользователь
 
Регистрация: 16.09.2015
Сообщений: 21
По умолчанию

Stilet, оставшийся код - это функции обращения к VCL компонентам из потока(unit2) и код создания потока(unit1). Ну если Вы посчитаете нужным, то я его предоставлю.

waleri, а можно по подробней? Как так получается, что память не выделилась ? Разве в этом случае ошибка не должна появляться при первой итерации цикла?

Smitt&Wesson, все равно ошибка.
Код:
TIdHTTP* IdHTTP1= new TIdHTTP(false) ;
Спасибо за отзывчивость.
HelloWold вне форума Ответить с цитированием
Старый 18.09.2015, 20:48   #13
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
если Вы посчитаете нужным, то я его предоставлю.
Ну иначе у меня нет никаких идей, я согласен с Валерием, где-то не выделяется память, или поток пытается отрабатывать во время его освобождения.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 18.09.2015, 22:10   #14
HelloWold
Пользователь
 
Регистрация: 16.09.2015
Сообщений: 21
По умолчанию

Unit1
Код:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
	MyThread *Thr = new MyThread(true);
	Thr->Priority = tpHigher;
	Thr->FreeOnTerminate = true;
	Thr->Start();
}
Unit2
Код:
void __fastcall MyThread::Progress()
{
	Form1->ProgressBar1->Position = Form1->ProgressBar1->Position + 1;
}
//---------------------------------------------------------------------------
void __fastcall MyThread::ProgressInit()
{
	Form1->ProgressBar1->Min = 0;
	Form1->ProgressBar1->Max = Form1->ListBox1->Count;
	Form1->ProgressBar1->Step = 1;
	Form1->Caption = "Go";
}
//---------------------------------------------------------------------------
void __fastcall MyThread::Log()
{
	Form1->Edit3->Text = StrToInt(Form1->Edit3->Text) + 1;
}

void __fastcall MyThread::LogSaveToFile()
{
	Form1->Memo1->Lines->Add(Form1->Logs);
}
HelloWold вне форума Ответить с цитированием
Старый 18.09.2015, 22:23   #15
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Form1->Logs
А зачем, если не секрет, свойством формы сделал? По хорошему Logs стоит упаковать в MyThread свойством. Я не думаю, что именно из-за этого проблема, так что это рекомендация.
Цитата:
Form1->Edit3->Text = StrToInt(Form1->Edit3->Text) + 1;
А чего не SpinEdit?

Ну а по теме: Не вижу я тут граблей. Может плохо смотрю, но код вроде кошерный.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 18.09.2015, 22:45   #16
HelloWold
Пользователь
 
Регистрация: 16.09.2015
Сообщений: 21
По умолчанию

Код:
Logs
лежит в Unit1.h и служит для того, что бы выводить ошибки в мемо( хотя это и так видно). А не сделал я эту переменную членом класса из-за того, что в дальнейшем буду реализовывать многопоточность.
Или я не верно поступил?
Цитата:
А чего не SpinEdit?
Да как бы это не нужно(хотя не знаю). Ведь в эдит дублируется итерации цикла(от 1 до 1000)

Так получается, что мы таки не знаем из-за чего происходит ошибка?
HelloWold вне форума Ответить с цитированием
Старый 19.09.2015, 09:24   #17
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Или я не верно поступил?
Ну верно или нет я не берусь решать, но я бы его не делал глобальным.
Цитата:
мы таки не знаем из-за чего происходит ошибка?
Увы и ах. Если убрать 1000 в цикле и поставить скажем 50 - ошибка будет?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 19.09.2015, 10:03   #18
HelloWold
Пользователь
 
Регистрация: 16.09.2015
Сообщений: 21
По умолчанию

Цитата:
Ну верно или нет я не берусь решать, но я бы его не делал глобальным.
Просто я размышлял так : если будет несколько потоков, то достаточно одной переменной, в которую они будет записывать логи. Но теперь мне кажется, что действительно лучше создать эту переменную в каждом объекте TThread. Иначе мне придется с этой переменной работать через критические секции - следовательно будет падать производительность(повысится время работы). А так возрастет(чуть-чуть) потребление памяти.

А насчет проблемы : я тут вспомнил, что в XE2 был(и есть) косяк с GZip - сжатие страниц. Когда-то я сталкивался с подобными ошибками ссылка

Может быть все таки косяк не в коде, а в самом INDY ? Как думаете?
HelloWold вне форума Ответить с цитированием
Старый 19.09.2015, 11:19   #19
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Иначе мне придется с этой переменной работать через критические секции
Вот именно.
Цитата:
в XE2 был(и есть) косяк с GZip
Впервые об этом слышу. У меня никогда не было таких проблем с ним.

P.S. Кстати, если грешишь на GZip может подключишь тогда компонент TIdZLibCompressor к своему содаваемому объекту?
I'm learning to live...

Последний раз редактировалось Stilet; 19.09.2015 в 15:28.
Stilet вне форума Ответить с цитированием
Старый 20.09.2015, 20:16   #20
HelloWold
Пользователь
 
Регистрация: 16.09.2015
Сообщений: 21
По умолчанию

Stilet, здравствуйте.
Я переустановил студию. Ошибка исчезла
HelloWold вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
NOD 32 выругался при заходе в тему "Литература в помощь при работе с базами данных", что в разделе "БД в Delphi" Вадим Мошев О форуме и сайтах клуба 4 09.11.2014 10:14
Ошибка при работе с БД: "Нераспознаваемый формат базы данных" lutdan БД в Delphi 7 21.03.2013 09:47
Ошибка "too many consecutive exceptions" при работе программы: как найти? DimychX Общие вопросы Delphi 11 22.06.2011 21:02
Ошибка при работе с canvas "Неверный дескриптор" Алекс Ялта Gamedev - cоздание игр: Unity, OpenGL, DirectX 17 13.06.2011 22:32
Проблема при работе с Indy 10 (idHttp) Lauri Работа с сетью в Delphi 3 04.11.2010 19:36