Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Подскажите

5.9K
17 февраля 2005 года
vladlenn
32 / / 17.02.2005
У меня есть реализованный(работающий в Visual c++) консольный класс мне нужно его вставить в приложение

Или как вообще в Borland C описать свой класс который состоит из стека и методов обработки этого стека?
[COLOR=red]Плохо писать много знаков препинания. Больше так не тупи.
Сказал тебе это - [/COLOR]lord Kelvin
259
17 февраля 2005 года
AlexandrVSmirno
1.4K / / 03.12.2004
Цитата:
Originally posted by vladlenn
У меня есть реализованный(работающий в Visual c++) консольный класс мне нужно его вставить в приложение

Или как вообще в Borland C описать свой класс который состоит из стека и методов обработки этого стека??????????????????

:???: :???: :???:


1. В опциях проекта в закладке компилер или адванцед компилер (точно не помню) есть галка совместимость с MFC.
попробуй поставить ее и сделать в проекте адд юнит со своим классом.
2. Свой класс описывается так-же как и в любом С++
class myClass : public myBaseClass
{
private:
.........
protected:
.........
public:
.........
};

5.9K
17 февраля 2005 года
vladlenn
32 / / 17.02.2005
Цитата:
Originally posted by AlexandrVSmirno

1. В опциях проекта в закладке компилер или адванцед компилер (точно не помню) есть галка совместимость с MFC.
попробуй поставить ее и сделать в проекте адд юнит со своим классом.
2. Свой класс описывается так-же как и в любом С++
class myClass : public myBaseClass
{
private:
.........
protected:
.........
public:
.........
};




Не-а попрежнему ругается.
Причем он ругается при первом же обращению к свойству метода, а это свойство инициализируется в конструкторе.:???:

259
17 февраля 2005 года
AlexandrVSmirno
1.4K / / 03.12.2004
Цитата:
Originally posted by vladlenn



Не-а попрежнему ругается.
Причем он ругается при первом же обращению к свойству метода, а это свойство инициализируется в конструкторе.:???:


Тогда текст класса в студию.
ЗЫ: Извени забыл еще вот про что:
Type Library (Tools|Environment Options)
Use the Type Library page of the Environment Options dialog box to select options for the Type Library editor. The new settings take effect when you click OK.

Code generation

Use dispinterfaces in control wrappers If the component supports both vtable and IDispatch-based interfaces, checking this option causes the importer to make the dispinterface the default interface for the component. The default behavior is to make the vtable-based interface the default interface.
MS-style property getter/setter prefixes If this option is checked, the importer uses Microsoft Visual C++ style prefixes on property getter/setter methods. Otherwise, the default prefixes get_ and set_ are used.
Component wrapper file

Change suffix The type library importer appends the suffix _OCX to the component wrapper files it generates. You can change this behavior by clicking the Change suffix checkbox, and selecting a different suffix or by typing a new one into the text field.
Ignore special CoClass Flags when importing

When you import an ActiveX Control, the type library importer only imports CoClasses that are not marked as Hidden, Restricted, or Predefined, and marked as CanCreate (actually 'noncreatable’). These flags are supposed to be set if the object is intended for general use. However, if you want to create a control for an internal application only, you can override the flags to generate the CoClass wrappers. In this case, you would check Ignore special CoClass flags when importing, Hidden, Restricted, and uncheck CanCreate (noncreatable).

Check the coclass flags you want to ignore when importing ActiveX controls:

Predefined Client applications should automatically create a single instance of this object.
Restricted A coclass marked 'restricted' is supposed to be ignored by tools that access COM objects. It's exposed by the type library but restricted to those authorized to use it.
Hidden The interface exists but should not be displayed in a user-oriented browser.
Can Create The instance can be created with CoCreateInstance.

5.9K
17 февраля 2005 года
vladlenn
32 / / 17.02.2005
Цитата:
Originally posted by AlexandrVSmirno

Тогда текст класса в студию.



struct RAST{
RAST *left,*right;
int ver1,ver2;
double rast,ang;
};
struct DOT{
DOT *left,*right;
int ver,ind;
double x,y;
};
class TREE{
RAST *vetv;
DOT *dot;
public:
TREE(void);
~TREE(void);

void add_vetv(int ver1,int ver2);
int in_dot(double x,double y);//legit ili net v dereve
void add_dot(int ver,double x,double y);
void del_ver(int i);
void del_vetv(int ver1,int ver2);
DOT *find(int i);
int num();
};

TREE::TREE(void){
dot=new DOT;
dot->left=dot->right=NULL;
dot->ver=0;
vetv=new RAST;
vetv->left=vetv->right=NULL;
vetv->rast=0;
}//end TREE

TREE::~TREE(void){
while (dot->right!=NULL)
{dot=dot->right;
free(dot->left);}
free(dot);
while (vetv->right!=NULL)
{vetv=vetv->right;
free(vetv->left);}
free(vetv);
}// end ~TREE


void TREE::add_dot(int ver,double x,double y){
{вот здесь останавливается } if(dot->ver==0)
{
dot->ver=ver;
dot->x=x;
dot->y=y;
dot->ind=100;
}
else{
if(!in_dot(x,y))
{
DOT *p;
p=(DOT*)malloc(sizeof(DOT));
p->ver=ver;
p->x=x;
p->y=y;
p->ind=100;
p->left=NULL;
p->right=dot;
dot->left=p;
dot=dot->left;
}
}
}// Dobavliaet vershinu v dot i sootvetstvujushie rastaiania v vetv

void TREE::add_vetv(int ver1,int ver2){
DOT *p1,*p2;
if(vetv->rast==0){
vetv->ver1=ver1;
vetv->ver2=ver2;
p1=find(ver1);
p2=find(ver2);
vetv->rast=hypot(p2->x-p1->x,p2->y-p1->y);
vetv->ang=atan2(p2->y-p1->y,p2->x-p1->x)*180/Pi;
if(vetv->ang<0)vetv->ang+=360;
}
else{
RAST *pp;
pp=(RAST*)malloc(sizeof(RAST));
pp->ver1=ver1;
pp->ver2=ver2;
p1=find(ver1);
p2=find(ver2);
pp->rast=hypot(p2->x-p1->x,p2->y-p1->y);
pp->ang=atan2(p2->y-p1->y,p2->x-p1->x)*180/Pi;
if(pp->ang<0)pp->ang+=360;
pp->left=NULL;
pp->right=vetv;
vetv->left=pp;
vetv=vetv->left;
}
}// Dobavliaet vershinu v dot i sootvetstvujushie rastaiania v vetv



int TREE::in_dot(double x,double y){
DOT *p;
p=dot;
while(p!=NULL){
if((p->x==x)&&(p->y==y))return 1;
p=p->right;
}
return 0;
}//legit ili net v dereve

int TREE::num(){
return dot->ver;
}

И когда я запускаю оно компилится нормально ано при

Form1->MyTREE->add_dot(1,12,23);

выкидывает что доступ к адресу запрещен

259
17 февраля 2005 года
AlexandrVSmirno
1.4K / / 03.12.2004
Цитата:
Originally posted by vladlenn


И когда я запускаю оно компилится нормально ано при

Form1->MyTREE->add_dot(1,12,23);

выкидывает что доступ к адресу запрещен


Код:
struct RAST{
           RAST *left,*right;
           int ver1,ver2;
           double rast,ang;
           };
struct DOT{
           DOT *left,*right;
           int ver,ind;
           double x,y;
           };
class TREE{
public:
   RAST *vetv;
   DOT *dot;
public:
  [COLOR=red]__fastcall TREE(void);[/COLOR]
  ~TREE(void);
[COLOR=red]
published:[/COLOR] //но можно оставить и public
        void add_vetv(int ver1,int ver2);
        int in_dot(double x,double y);//legit ili net v dereve
        void add_dot(int ver,double x,double y);
        void del_ver(int i);
        void del_vetv(int ver1,int ver2);
        DOT *find(int i);
        int num();
};

[COLOR=red]__fastcall TREE::TREE(void){[/COLOR]
   dot=new DOT;
   dot->left=dot->right=NULL;
   dot->ver=0;
   vetv=new RAST;
   vetv->left=vetv->right=NULL;
   vetv->rast=0;
}//end TREE

TREE::~TREE(void){
 while (dot->right!=NULL)
  {dot=dot->right;
   free(dot->left);} [COLOR=red]//вместо free лучше [/COLOR]использовать delete
  free(dot);
 while (vetv->right!=NULL)
  {vetv=vetv->right;
   free(vetv->left);}
  free(vetv);
}// end ~TREE


void TREE::add_dot(int ver,double x,double y){
  [COLOR=red]if(dot == NULL) return;[/COLOR]
{вот здесь останавливается } if(dot->ver==0)
 {
      dot->ver=ver;
        dot->x=x;
        dot->y=y;
        dot->ind=100;
  }
else{
  if(!in_dot(x,y))
     {
       DOT *p;
       p=(DOT*)malloc(sizeof(DOT));[COLOR=red]//вместо malloc лучше new[/COLOR]
       p->ver=ver;
       p->x=x;
       p->y=y;
       p->ind=100;
       p->left=NULL;
       p->right=dot;
       dot->left=p;
       dot=dot->left;
      }
   }
}// Dobavliaet vershinu v dot i sootvetstvujushie rastaiania v vetv

void TREE::add_vetv(int ver1,int ver2){
   DOT *p1,*p2;
   if(vetv->rast==0){
     vetv->ver1=ver1;
     vetv->ver2=ver2;
     p1=find(ver1);
     p2=find(ver2);
     vetv->rast=hypot(p2->x-p1->x,p2->y-p1->y);
     vetv->ang=atan2(p2->y-p1->y,p2->x-p1->x)*180/Pi;
     if(vetv->ang<0)vetv->ang+=360;
    }
   else{
       RAST *pp;
       pp=(RAST*)malloc(sizeof(RAST));
       pp->ver1=ver1;
       pp->ver2=ver2;
       p1=find(ver1);
       p2=find(ver2);
       pp->rast=hypot(p2->x-p1->x,p2->y-p1->y);
       pp->ang=atan2(p2->y-p1->y,p2->x-p1->x)*180/Pi;
       if(pp->ang<0)pp->ang+=360;
       pp->left=NULL;
       pp->right=vetv;
       vetv->left=pp;
       vetv=vetv->left;
   }
}// Dobavliaet vershinu v dot i sootvetstvujushie rastaiania v vetv



int TREE::in_dot(double x,double y){
DOT *p;
p=dot;
while(p!=NULL){
    if((p->x==x)&&(p->y==y))return 1;
p=p->right;
}
return 0;
}//legit ili net v dereve

int TREE::num(){
return dot->ver;
}

Попробуй с моими исправлениями. и в билдере лучше использовать для методов __fastcall, хотя и не обязательно.
5.9K
18 февраля 2005 года
vladlenn
32 / / 17.02.2005
Помоему он не запускает при создании класса конструктор. Потому что создаем вот такой класс:

class AAA{
int P;

public:
__fastcall AAA(void){P=13;};
~AAA(void){};
int pp(void){return P;};
};

подцепляем в форму компилится запускается но при обращении к рр() выдает ошибку, но если исправить рр вот так

int pp(void){int P=15;return P;};

то всё нормально обращается и отрабатывает рр
259
18 февраля 2005 года
AlexandrVSmirno
1.4K / / 03.12.2004
Цитата:
Originally posted by vladlenn
Помоему он не запускает при создании класса конструктор. Потому что создаем вот такой класс:

class AAA{
int P;

public:
__fastcall [COLOR=red]inline[/COLOR] AAA(void){P=13;};
~AAA(void){};
int pp(void){return P;};
};

подцепляем в форму компилится запускается но при обращении к рр() выдает ошибку, но если исправить рр вот так

int pp(void){int P=15;return P;};

то всё нормально обращается и отрабатывает рр
?????????????????????????????????????


Это проверить легко. Поставь точку останова в контструкторе. Только не делай его inline.

PS: Слушай а как ты объект MyTREE создаешь? Я имею вв виду строку Form1->MyTREE->ad ... до этого обязательно должны быть выполнены 2 условия.
1. MyTree должно быть объявлена как public свойство класса TForm1, TREE* MyTREE.
2. В обработчике событий ONCreate формы должен быть оператор MyTREE = new TREE;

5.9K
18 февраля 2005 года
vladlenn
32 / / 17.02.2005
Цитата:
Originally posted by AlexandrVSmirno [COLOR=red]

2. В обработчике событий ONCreate формы должен быть оператор MyTREE = new TREE;

[/COLOR]

Спасибо ну в досе там если ты пишеь TREE *MyTREE;
то автоматом конструктор вызывается а тут:!!!:

Спасибо вообщем!

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог