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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 28.11.2010, 20:45   #1
CodeNOT
Форумчанин
 
Аватар для CodeNOT
 
Регистрация: 08.11.2010
Сообщений: 593
По умолчанию классы

в общем у меня возникла проблема, я написал модуль, которые содержит в себе два класса , конструкторы и методы.
Когда я привинчиваю этот модуль к форме, соответственно вызвав конструкторы возникает одна проблема, мне для разных форм, нужны разные модули из одного класса, но на одной форме работает, а вот на другой нет.
Собственно код самого модуля с классамиЖ
Код:
#include <vcl.h>
#pragma hdrstop
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
struct Words;
struct Words{
 string eng;
 string rus;
};
String search;
int n=32000;
Words *tr[32000];
String result;
int flag;
class TGetSlovar{
 public:
        TGetSlovar(int n);
        void AddNewWord(int n,Words *newword);
        void DellWord(int n,Words * delword);
        void SaveAll(int n);
};
//--------------------------------------------------------
void TGetSlovar::SaveAll(int n){
int i=0;
        ofstream engsave;
        ofstream russave;
                russave.open("rus.dat");
                engsave.open("eng.dat");
        for(i=0;i<n;i++){
                if(tr[i]->eng!=""&&tr[i]->rus!=""){
                        engsave<<tr[i]->eng<<"\n";
                        russave<<tr[i]->rus<<"\n";
                }
        }
engsave.close();
russave.close();
}
//---------------------------------------------------------
TGetSlovar::TGetSlovar(int n){
int i=0;
        ifstream engopen;
        ifstream ruopen;
                engopen.open("eng.dat");
                ruopen.open("rus.dat");
                        if(!engopen){exit(1);}
                        if(!ruopen){exit(1);}
                while(!engopen.eof()){
                        while(!ruopen.eof()){
                                for(i=0;i<n;i++){
                                 tr[i]=new Words;
                                 engopen>>tr[i]->eng;
                                 ruopen>>tr[i]->rus;
                                }
                        }
                }
engopen.close();
ruopen.close();
}
//-------------------------------------------------------
void TGetSlovar::AddNewWord(int n,Words *newword){
int i=0;
        for(i=0;i<n;i++){
                if(tr[i]->eng==""&&tr[i]->rus==""){
                 tr[i]->eng=newword->eng;
                 tr[i]->rus=newword->rus;
                 break;
                }
        }
delete newword;

}
//---------------------------------------------------------
void TGetSlovar::DellWord(int n,Words * delword){
int i=0;
        for(i=0;i<n;i++){
                if(tr[i]->eng==delword->eng||tr[i]->rus==delword->eng){
                 tr[i]->eng="";
                 tr[i]->rus="";
                 break;
                }
        }
delete delword;

}
//-----------------------------------------------
class Translate:TGetSlovar {
        public:
                Translate(int n):TGetSlovar(n){};
                String EngRusTranslate(int n,String search);
                String RusEnfTranslate(int n,String search);
};
//--------------------------------------------------------------------
String Translate::EngRusTranslate(int n,String search){
int i=0;
        for(i=0;i<n;i++){
                if(search.c_str()==tr[i]->eng){
                        result=tr[i]->rus.c_str();
                        flag=1;
                }
        }
return flag;
}
//---------------------------------------------------------------------
String Translate::RusEnfTranslate(int n,String search){
int i=0;
        for(i=0;i<n;i++){
                if(search.c_str()==tr[i]->rus){
                        result=tr[i]->eng.c_str();
                        flag=1;
                }
        }
return flag;
}
CodeNOT вне форума Ответить с цитированием
Старый 28.11.2010, 20:46   #2
CodeNOT
Форумчанин
 
Аватар для CodeNOT
 
Регистрация: 08.11.2010
Сообщений: 593
По умолчанию слудющее

код первой формы:
Код:
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
#include "Unit2.h"
#include "Unit3.h"
using namespace std;
#include <string>

//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------


void __fastcall TForm1::N4Click(TObject *Sender)
{
Form2->Show();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::N5Click(TObject *Sender)
{
Form3->Show();
}
код второй формы:
Код:
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
#include "Unit2.h"
#include "1.cpp"
TGetSlovar *GetSlovar=new TGetSlovar(n);
Translate * trans=new Translate(n);
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm2 *Form2;
//---------------------------------------------------------------------------
__fastcall TForm2::TForm2(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------

void __fastcall TForm2::Button1Click(TObject *Sender)
{
String search;
search=Edit1->Text;
trans->EngRusTranslate(n,search);
Form2->Memo1->Text=result.c_str();
}
//-----------------------------------------------------------------------
код третьей формы
Код:
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
#include "Unit3.h"
#include "1.cpp"
using namespace std;
#include <string>
 TGetSlovar *GetSlovar=new TGetSlovar(n);
Translate * trans=new Translate(n);
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm3 *Form3;
//---------------------------------------------------------------------------
__fastcall TForm3::TForm3(TComponent* Owner)
        : TForm(Owner)
{

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

void __fastcall TForm3::Button1Click(TObject *Sender)
{
String search;
search=Edit1->Text;
trans->RusEnfTranslate(n,search);
Form3->Memo1->Text=result.c_str();
}
CodeNOT вне форума Ответить с цитированием
Старый 28.11.2010, 20:59   #3
CodeNOT
Форумчанин
 
Аватар для CodeNOT
 
Регистрация: 08.11.2010
Сообщений: 593
По умолчанию

Причем, если я вкорячиваю перевод англо-русский и русско-английски на одну форму(в моем случае форму 2) то все работает, а вот когда на разных формах, то на второй форме работает, а на третьей нет

Последний раз редактировалось CodeNOT; 28.11.2010 в 23:02.
CodeNOT вне форума Ответить с цитированием
Старый 29.11.2010, 22:33   #4
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

Есть предположение, что все дело в двойном включении переменной result. Попробуйте не делать таких хитровывернутых штук, а сделайте результат возвращаемым значением и писать примерно так:
Код:
void __fastcall TForm3::Button1Click(TObject *Sender)
{
String search=Edit1->Text;
Form3->Memo1->Text=(trans->RusEnfTranslate(n,search));
}
(повыкидывал до кучи некоторые совсем необязательные вещи)
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же
Гром вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Классы Nostalgia Помощь студентам 16 28.12.2009 09:01
Классы в С++ Wirz Помощь студентам 1 04.06.2009 23:22
С++ классы KOLYTFR Помощь студентам 1 04.06.2009 19:58
классы elenSV Общие вопросы C/C++ 0 31.05.2009 09:48