Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вопрос о TThread, Не видит указаль на Поток 
V
    Опции темы
Comm
Дата 17.9.2007, 02:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 269
Регистрация: 31.8.2007
Где: Санкт-Петербург

Репутация: 2
Всего: 1



Всех приветствую..

У меня  есть 2 формы и один наследник TThread.. ->"Unit3.h" 
Все это дело соединено между собой..
#include "Unit1.h"    <<<<<<<<<   LoL*Thread;  
#include "Unit2.h"
#include "Unit3.h" 
====================================
Потом в одной из public: функций   "Unit1.h" запускаю поток..

       Thread= new LoL(false);
       Thread->FreeOnTerminate=true;

====================================
Потом сую в обработчик событий  OnClose формы    Form2("Unit2.h") конструкцию Thread->Terminate(); //завершить поток..

И он выдает мне мол  , О каком Thread ты мне тут бакланишь, ничего не знаю =)
 [C++ Error] Unit2.cpp(50): E2451 Undefined symbol 'Thread'  
Я запутался, помогите  ((



заранее ,Большое Спасибо...




--------------------
=)))))
user posted image
PM MAIL ICQ   Вверх
Mihhail
Дата 17.9.2007, 07:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 96
Регистрация: 13.9.2007

Репутация: нет
Всего: 9



А в файле Unit2.h прописано #include "Unit1.h"? Если нет - потому и не видит!

Цитата(Comm @  17.9.2007,  06:26 Найти цитируемый пост)
Все это дело соединено между собой..
#include "Unit1.h"    <<<<<<<<<   LoL*Thread;
#include "Unit2.h"
#include "Unit3.h" 

Это не объединение файлов, это присоединение к одному(в котором прописано) трёх других.

Это сообщение отредактировал(а) Mihhail - 17.9.2007, 07:36
PM MAIL WWW   Вверх
Comm
  Дата 17.9.2007, 12:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 269
Регистрация: 31.8.2007
Где: Санкт-Петербург

Репутация: 2
Всего: 1



В каждом Unit.h  прописано ....  а все равно не видит (((

А может из за объявления внутри функции Unit1.h ? хотя вряд ли...

LoL*Thread; объявлен сразу после Form1 *TForm; в Unit1.h



===============================
void _fastcall TForm1::ConnectAndRead(........)
{

   Thread= new LoL(false);
   Thread->FreeOnTerminate=true;

}
=================================

Результат при попытке манипуляции с указателем в Unit2.h 
Thread-> Ctrl+Space............... // [C++ Error] Unit2.cpp(1): Unable to invoke Code Completion due to errors in source code

Это сообщение отредактировал(а) Comm - 17.9.2007, 15:19


--------------------
=)))))
user posted image
PM MAIL ICQ   Вверх
Mihhail
Дата 17.9.2007, 15:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 96
Регистрация: 13.9.2007

Репутация: нет
Всего: 9



Цитата

[C++ Error] Unit2.cpp(1): Unable to invoke Code Completion due to errors in source code

Это уже не в видидимости дело, гдато неправильая запись.

Thread-> Ctrl+Space............... //
Это что такое, дай полностью..
PM MAIL WWW   Вверх
Comm
Дата 17.9.2007, 19:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 269
Регистрация: 31.8.2007
Где: Санкт-Петербург

Репутация: 2
Всего: 1



Эм.... Thread это поток объявленный  LoL * Thread 
Послего того как написал   Thread-> можно нажать комбинацию клавиш   Ctrl+Space  и по идеи открывается список со всевозможными манипуляциями с указателем.... но вместо этого  вылазит вышенаписанная ошибка ((( 


--------------------
=)))))
user posted image
PM MAIL ICQ   Вверх
Mihhail
Дата 17.9.2007, 20:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 96
Регистрация: 13.9.2007

Репутация: нет
Всего: 9



Ещё один момент, проверь:
Цитата(Comm @  17.9.2007,  16:57 Найти цитируемый пост)
LoL*Thread; объявлен сразу после Form1 *TForm; в Unit1.h

Form1 *TForm; - такая запись обычно в Unit1.cpp файле находится. Т.е.и LoL*Thread там же?
Тогда в Unit1.h после extern PACKAGE TForm1 *Form1; необходимо прописать: extern LoL*Thread, для видимости её во внешних файлах.


Это сообщение отредактировал(а) Mihhail - 17.9.2007, 21:02
PM MAIL WWW   Вверх
Comm
Дата 17.9.2007, 21:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 269
Регистрация: 31.8.2007
Где: Санкт-Петербург

Репутация: 2
Всего: 1



Unit1.cpp...

#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
LoL *Thread;
//---------------------------------------------------------------------------
Unit1.h

extern PACKAGE TForm1 *Form1;
extern PACKAGE LoL *Thread; <<< без PACKAGE такая же ошибка...

//---------------------------------------------------------------------------
#endif

 и вот что выдает при компиляции  [C++ Error] Unit1.h(69): E2141 Declaration syntax error

Это сообщение отредактировал(а) Comm - 17.9.2007, 21:40


--------------------
=)))))
user posted image
PM MAIL ICQ   Вверх
Fazil6
Дата 17.9.2007, 22:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1653
Регистрация: 3.5.2006
Где: Минск

Репутация: 11
Всего: 60



Comm, такое чувство, что у тебя там какая-то секретная программа. Выложи полностью Unit1.h и Unit1.cpp и тебе сразу скажут где косяк.
PM MAIL   Вверх
Comm
Дата 17.9.2007, 22:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 269
Регистрация: 31.8.2007
Где: Санкт-Петербург

Репутация: 2
Всего: 1



Unit1.cpp
Код

//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop
#include <winsock2.h>
#include "Unit1.h"
#include "Unit2.h"
#include "Unit3.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
LoL *Thread;


//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{

}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
  WORD wVersion;
  WSADATA wsaData;
  wVersion = MAKEWORD (2, 0);

  int wsaInitError = WSAStartup (wVersion, &wsaData);   
  if (wsaInitError != 0)
  {
   ShowMessage("Не удалось Инициализировать Библиотеку WinSock !");
   Form1->Close();
  }
  Spisok->Cells[0][0]="Список";
  Spisok->Cells[1][0]="Сколько";
  Spisok->Cells[2][0]="Domen / ID";

}
//---------------------------------------------------------------------------

void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action)
{
 WSACleanup();
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)
{
ConnectAndSendRecv(true,0);

}
//---------------------------------------------------------------------------
//void SocketConnect(
void __fastcall TForm1::ListBox1DblClick(TObject *Sender)
{
 ShowMessage("OK");
}
//---------------------------------------------------------------------------



//---------------------------------------------------------------------------

void __fastcall TForm1::Edit1Click(TObject *Sender)
{
 Edit1->SelectAll();
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Edit3Click(TObject *Sender)
{
 Edit3->SelectAll();
}
//---------------------------------------------------------------------------

void __fastcall TForm1::ConnectandRecv()
{
     if(count==5)
     {
       Thread = new LoL(false);
       Thread->FreeOnTerminate=true;
       count++;
       Form2->Show();
       count++;

     }
     count++;

 }

}
//----------------------------------------------------------------------------
void __fastcall TForm1::MaskEdit1Click(TObject *Sender)
{
 Edit2->SelectAll();
}
//---------------------------------------------------------------------------



void __fastcall TForm1::Edit2Click(TObject *Sender)
{
 Edit2->SelectAll();
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Edit3DblClick(TObject *Sender)
{
 Form2->Show();        
}
//---------------------------------------------------------------------------


void __fastcall TForm1::SpisokDblClick(TObject *Sender)
{
 ShowMessage(IntToStr(Spisok->Selection.Right));
}
//---------------------------------------------------------------------------

void __fastcall TForm1::SpisokSelectCell(TObject *Sender, int ACol,
      int ARow, bool &CanSelect)
{
 Edit3->Text=Spisok->Cells[2][ARow];
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button2Click(TObject *Sender)
{
 ConnectAndSendRecv(false,3);
}
//---------------------------------------------------------------------------


void __fastcall TForm1::Edit4Click(TObject *Sender)
{
 Edit4->SelectAll();        
}
//---------------------------------------------------------------------------



Добавлено @ 22:40
Unit1.h
Код

//---------------------------------------------------------------------------

#ifndef Unit1H
#define Unit1H
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
#include <ComCtrls.hpp>
#include <Grids.hpp>
#include <ValEdit.hpp>
#include <ExtCtrls.hpp>
#include <Mask.hpp>
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published:    // IDE-managed Components
        TGroupBox *GroupBox1;
        TEdit *Edit1;
        TComboBox *ComboBox1;
        TCheckBox *CheckBox1;
        TComboBox *ComboBox2;
        TComboBox *ComboBox3;
        TButton *Button1;
        TProgressBar *ProgressBar1;
        TEdit *Edit3;
        TBevel *Bevel2;
        TBevel *Bevel3;
        TBevel *Bevel4;
        TStringGrid *Spisok;
        TButton *Button2;
        TEdit *Edit4;
        TEdit *Edit2;
        TBevel *Bevel5;
        void __fastcall FormCreate(TObject *Sender);
        void __fastcall FormClose(TObject *Sender, TCloseAction &Action);
        void __fastcall Button1Click(TObject *Sender);
        void __fastcall ListBox1DblClick(TObject *Sender);
        void __fastcall Edit1Click(TObject *Sender);
        void __fastcall Edit3Click(TObject *Sender);

        void __fastcall ValueListEditor1DblClick(TObject *Sender);
        void __fastcall MaskEdit1Click(TObject *Sender);
        void __fastcall Edit2Click(TObject *Sender);
        void __fastcall Edit3DblClick(TObject *Sender);
        void __fastcall SpisokDblClick(TObject *Sender);
        void __fastcall SpisokSelectCell(TObject *Sender, int ACol,
          int ARow, bool &CanSelect);
        void __fastcall Button2Click(TObject *Sender);
        void __fastcall Edit4Click(TObject *Sender);
        //void __fastcall SendOrRecv(
private:
       // User declarations
public:

          char szServerName[1024];
          AnsiString mPop;
          AnsiString mT;
          AnsiString mMrcu;
          AnsiString mTicket;
        AnsiString __fastcall GetCookie(AnsiString mess,AnsiString on,AnsiString off,int Sm,int mS);
        void __fastcall SearchRoom(AnsiString mess,AnsiString on,AnsiString off,int r,int l);
        void __fastcall ConnectAndSendRecv(bool commm,int count);
        __fastcall TForm1(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
extern PACKAGE LoL * Thread;


//---------------------------------------------------------------------------
#endif


Это сообщение отредактировал(а) Comm - 17.9.2007, 23:11


--------------------
=)))))
user posted image
PM MAIL ICQ   Вверх
Fazil6
Дата 17.9.2007, 22:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1653
Регистрация: 3.5.2006
Где: Минск

Репутация: 11
Всего: 60



ну и где в Unit1.h подключается описание класса LoL ?
PM MAIL   Вверх
Comm
Дата 17.9.2007, 22:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 269
Регистрация: 31.8.2007
Где: Санкт-Петербург

Репутация: 2
Всего: 1



Класс LoL в #include "Unit3.h"
Дело в том что в  Unit1.cpp  указатель Thread виден прекрасно... что нельзя сказать о Unit2.cpp


Это сообщение отредактировал(а) Comm - 17.9.2007, 22:51


--------------------
=)))))
user posted image
PM MAIL ICQ   Вверх
Fazil6
Дата 17.9.2007, 23:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1653
Регистрация: 3.5.2006
Где: Минск

Репутация: 11
Всего: 60



Цитата(Comm @  17.9.2007,  22:49 Найти цитируемый пост)
Класс LoL в #include "Unit3.h"

мда уж... 
Видишь как трудно быть пластмассовым по самые плечи?

Повторяю свой вопрос:
Цитата(Fazil6 @  17.9.2007,  22:43 Найти цитируемый пост)
ну и где в Unit1.h подключается описание класса LoL ?




Цитата(Comm @  17.9.2007,  22:49 Найти цитируемый пост)
Дело в том что в  Unit1.cpp  указатель Thread виден прекрасно... что нельзя сказать о Unit2.cpp


для того чтобы он был виден прекрасно, должно быть доступно его объявление и описание его типа. 

PM MAIL   Вверх
Comm
Дата 18.9.2007, 00:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 269
Регистрация: 31.8.2007
Где: Санкт-Петербург

Репутация: 2
Всего: 1



Вот только сделал... ссылка на пример ниже ... Есть две формы
На первой форме три  кнопки "ЗАпустить" , "Остановить" ,  "открыть форму 2" и метка Лейбел
где увеличивается счетчик в  потоке...
И на форме 2 ,кнопка.."остановить"..
Так вот если не трудно ..продемонстрируй мне пожалуйста  как можно остановить поток кнопкой из формы 2..
Ссылка на файл  BCB6

Это сообщение отредактировал(а) Comm - 18.9.2007, 02:21


--------------------
=)))))
user posted image
PM MAIL ICQ   Вверх
Comm
Дата 18.9.2007, 12:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 269
Регистрация: 31.8.2007
Где: Санкт-Петербург

Репутация: 2
Всего: 1



Очень расчитываю на помощь... smile 


--------------------
=)))))
user posted image
PM MAIL ICQ   Вверх
dumb
Дата 18.9.2007, 13:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


sceloglauxalbifacies
****


Профиль
Группа: Экс. модератор
Сообщений: 2929
Регистрация: 16.6.2006

Репутация: 32
Всего: 158



Comm, ты б книжку какую-нибудь хоть почитал...



Присоединённый файл ( Кол-во скачиваний: 16 )
Присоединённый файл  primer1.rar 3,72 Kb
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.0651 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.