Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C++ Builder > *.h////*.cpp и другое


Автор: Alexandering 14.9.2008, 17:22
Господа..помогите..(Все в BCB 6)
Создаю обычное Application
Но..Необходимо все различные функции описать в отдельном модуле. В Дельфи это делается оч. просто. А вот в BCB я че-т как-то растерян.
Я делаю следующее:
Помимо основного модуля(Unit1.cpp) я создаю Header *.h Вот в нем хочу сделать интерфейс для всех своих функций, А потом создаю CPP File *.cpp в котором уже пишу реализайию своих функций...
Но при таком подходе я имею кучу ошибок...
Допустим Header наз-ся Formyla.h. Дак вот в Unit1.cpp я пишу #include "Formyla.h" и пытаюсь в этом модуле (Unit1.cpp) использовать свои функции..Но можно ли так просто по имени к ним обращатья?? Если бы я там в Header`e описывал свой класс, то в Unit1.cpp создавал бы просто экземпляр этого класса, и уже работал с ним(Если описывать класс, и юзать функции этого класса, то все просто, но я же хочу просто функции, без всяких новых классов)...
И обЪясните мне технику создания, компилирования, сохранения...А то возникают ошибки, типа ******.obj (К сожалению текста ошибок не помню)...Потому как я часто замечал, что если я создаю Новое приложение, сразу его откомпилю, Потом сохраню на ж0ский, А потом буду добавлять новые хедеры, *.cpp. То вот после описания вот этих новых модулей, что в первую очередь необходимо сделать - 1)Сразу все откомпилить?? Или 2) Сначала все сохранить в одну папку и потом откомпилить?? Вот на этом этапе я всегда мучаюсь, потому как если сделаю в неправильной последовательности, возникает какая-то ошибка и потом ни че не помагает, кроме как все делать с начала, с нуля.
------------------------------------------------------
Надеюсь не утомил вас.
Прошу подробно ответить на каждый вопрос, какой усмотрите во всей этой вате.
Жду... (с) 

Автор: mrbrooks 14.9.2008, 21:08
надо добавить файлы в проект либо

1.File->New->Application
2.File->New->Unit
Сохраняем. 
в юните с формой (п.1) жмем alt-F11 - добавляем второй юнит (п.2). Делаем что хотим.

зы. берем книжку по борману и читаем. 

Автор: Dem_max 15.9.2008, 14:22
Пример у тебя есть проект, чтоб добавить к нему функции описанные в отдельном cpp нужно сделать:
1.  Создаешь MyFunc.h
в нем
int Print(int data);

и #include "MyFunc.h" в основном cpp проекта

2. Создаешь MyFunc.cpp
в нем
int Print(int data)
{

 return data;
}

и Project->Add to Project->MyFunc.cpp

Это для обычных функций, для класса немного подругому.

Автор: Alexandering 15.9.2008, 14:33
Все...понял..
Спасибочки..))

Автор: Dem_max 15.9.2008, 15:21
Эт еще не все, вот тебе для класса,  работа..., не успел дописать пост
Language.h в нем:
Код

#ifndef LANGUAGE_H // Вот на эти команды препроцессора не забывай для классов.
#define LANGUAGE_H

class TGUITranslator
{

   int ItemCount;
   TCHAR *strText;

public:

   TGUITranslator(){ItemCount = 0;}
   ~TGUITranslator(){vControl.clear(); ItemCount = 0;}
   virtual BOOL Translate(int LangID);
   virtual BOOL GetTextItem(UINT CtrlID, int LangID, LPTSTR str);

protected:
   BOOL TranslateStatic(HINSTANCE hInstance, HWND pWnd, UINT CtrlStringID);
};
#endif


В Language.cpp пишем
Код

#include <windows.h>
#include <tchar.h>
#include "Language.h"


BOOL TGUITranslator::GetTextItem(UINT CtrlID, int LangID, LPTSTR str)
{
   UINT StrID = CtrlID + 10000 + LangID*1000;
   HINSTANCE hInstance = GetModuleHandle(NULL);
   LoadString(hInstance, StrID, str, MAX_TXT);
   return 0;
}

BOOL TGUITranslator::Translate(int LangID)
{
   PCONTROL_DATA pCtrlData = new CONTROL_DATA;

   HINSTANCE hInstance = GetModuleHandle(NULL);
   for (int i = 0; i < ItemCount; i++ )
   {
      pCtrlData = vControl[i];
      UINT StrID = pCtrlData->CtrlStringID + 10000 + LangID*1000;
      TCHAR *Txt_Message;
      Txt_Message = new TCHAR[50];
      wsprintf(Txt_Message, _T("StrID  %d"), StrID);
      //MessageBox(0, Txt_Message, _T("Ошибка:"), MB_OK);
      delete Txt_Message;
      switch(pCtrlData->CtrlType)// (pCtrlData->eType)
      {
      case STATIC: TranslateStatic(hInstance, pCtrlData->hWndCtrl, StrID); break;
      case BUTTON: TranslateButton(hInstance, pCtrlData->hWndCtrl, StrID); break;
      }
   }
   return 0;
}

BOOL TGUITranslator::TranslateStatic(HINSTANCE hInstance, HWND hWnd, UINT CtrlStringID)
{
    strText = new TCHAR[MAX_TXT];
    LoadString(hInstance, CtrlStringID, strText, MAX_TXT);
    SetWindowText(hWnd, strText);
    delete strText;
    return TRUE;
}


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)