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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.06.2012, 21:36   #1
bulldog5293
Форумчанин
 
Регистрация: 13.05.2010
Сообщений: 670
По умолчанию Через Synchronize не работает get

Пишу программу в которой часто повторяются некоторые части кода, к примеру тот же get. Решил вынести его в Synchronize и обламался? get не работает
Код:
***.cpp

void __fastcall ***::Execute()
{
	TIdHTTP *FH = new TIdHTTP(NULL);
{
	  Synchronize(&Geting);
}
}

void __fastcall ***::Geting()
 {
	  FH->Get("http://" + FUrl);
}
и
Код:
***.h

#ifndef TBUXH
#define TBUXH

#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
#include <ComCtrls.hpp>
#include <IdBaseComponent.hpp>
#include <IdComponent.hpp>
#include <IdHTTP.hpp>
#include <IdTCPClient.hpp>
#include <IdTCPConnection.hpp>
#include <IdTCPConnection.hpp>
#include <Graphics.hpp>

class FBUX : public TThread
{
private:
TIdCustomHTTP *FH;
String FUrl;
protected:
	void __fastcall Execute();
   void __fastcall Geting();
public:
	__fastcall FBUX(bool CreateSuspended);
};
bulldog5293 вне форума Ответить с цитированием
Старый 12.06.2012, 23:25   #2
microbit
Форумчанин
 
Аватар для microbit
 
Регистрация: 26.09.2011
Сообщений: 176
По умолчанию

а где создание TIdCustomHTTP *FH ? давно не программировал на булдере но Synchronize помоему используется для обращения в к графическим компонентам из потоков, для остальных нужно использовать критические области или атомарные функции.
microbit вне форума Ответить с цитированием
Старый 13.06.2012, 14:15   #3
bulldog5293
Форумчанин
 
Регистрация: 13.05.2010
Сообщений: 670
По умолчанию

Цитата:
а где создание TIdCustomHTTP *FH
а разве этот код его не создаёт?
Код:
	TIdHTTP *FH = new TIdHTTP(NULL);
Цитата:
давно не программировал на булдере но Synchronize помоему используется для обращения в к графическим компонентам из потоков, для остальных нужно использовать критические области или атомарные функции.
Я C++ Builder можно сказать только осваиваю, в дельфи я делал всё через Synchronize, без него не палучалось. Да и не думаю что в моём случае нужна критическая секция, т.к. каждый поток берёт для себя свою копию кода
bulldog5293 вне форума Ответить с цитированием
Старый 14.06.2012, 10:04   #4
Krok27
Форумчанин
 
Аватар для Krok27
 
Регистрация: 08.07.2010
Сообщений: 505
По умолчанию

Цитата:
а разве этот код его не создаёт?
Код:


TIdHTTP *FH = new TIdHTTP(NULL);

Не создает. Перекрыл член класса локальной переменной, еще и утечка памяти будет.

Код:
FH = new TIdHTTP(NULL);
Создает.

Synchronize можно убрать.
Знающий не говорит, говорящий не знает (С) Лао Цзы

Последний раз редактировалось Krok27; 14.06.2012 в 10:07.
Krok27 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
не работает написанная функция через Tbutton pimple2006 Общие вопросы Delphi 6 11.12.2011 00:04
Synchronize() и события формы RusikOk Общие вопросы C/C++ 0 24.07.2010 08:52
Synchronize в DLL AnomaliA Общие вопросы Delphi 12 29.09.2009 13:08
Метод Synchronize класса TThread EdNovice Общие вопросы Delphi 10 01.08.2009 14:47
не работает запрос через Clientdataset nicki БД в Delphi 1 17.09.2007 17:08