Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Вопросы по программированию на C/С++

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322

Открыть новую тему     Написать ответ в эту тему

Crazy_Shrike



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Вопросы по программированию на C/С++

 
  • Справочники, книги
  • Выбор IDE (среды программирования)
     
    Постарайтесь дать как можно больше информации о возникшей проблеме - это в конце концов в ваших же интересах чтобы вам помогли.

    Решения конкретных задач собираются и обсуждаются в теме Задачи по C/С++ .

    Прежде чем просить помощи в задании...
    Если позарез надо и вы даже готовы заплатить

    Как правильно задавать вопросы, если вы хотите получить ответ.

    Полезные ссылки:
    C++(eng)

  • Всего записей: 241 | Зарегистр. 25-03-2004 | Отправлено: 13:37 06-05-2004 | Исправлено: AZJIO, 19:45 12-05-2014
    distance

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    nick7inc
    функтор != функция
    решение:
    1. template
    2. отказ от функтора
    3. boost::function и boost::bind

    Всего записей: 878 | Зарегистр. 28-03-2004 | Отправлено: 20:50 08-04-2008
    marrow1

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Вот что у меня вышло по поводу сохранения файла (копирования)
     

    Код:
     
    void CNETApp::OnSave1()  
    {  
     
    CFileDialog fileDialog(FALSE,NULL,_T("*.txt"),NULL,_T("Text"));  
     
    if (fileDialog.DoModal()==IDOK)  
    {  
     
    LPCTSTR sfile=_T("netcalc.txt");    
     
    CopyFile(sfile,(fileDialog.GetPathName()),TRUE);  
         
    }  
    }
     

     
    работает но не совсем так как нужно. Если файл сохраняю(копирую с другим именем) в текущюю директорию, то копирует без проблем, а вот если хоть только на уровень выше или еще чего, то уже не сохраняет файл (не копирует). В чем проблема? Помогите плиз.

    Всего записей: 801 | Зарегистр. 21-12-2006 | Отправлено: 17:53 09-04-2008
    scai

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    marrow1
     
                 CString Source,Destin;
        GetDlgItem(IDC_EDIT1)->GetWindowTextA(Source);
        GetDlgItem(IDC_EDIT2)->GetWindowTextA(Destin);
        LPSHFILEOPSTRUCT lpFileOp=new SHFILEOPSTRUCT;
        lpFileOp->hwnd=GetSafeHwnd();
        lpFileOp->wFunc=FO_COPY;
        Source=Source+'\0';
        lpFileOp->pFrom=Source;
        lpFileOp->pTo=(Destin);
        lpFileOp->fFlags=(FOF_NOCONFIRMATION|FOF_ALLOWUNDO);
        BOOL abort=FALSE;
        lpFileOp->fAnyOperationsAborted=abort;
        lpFileOp->hNameMappings=0;
        lpFileOp->lpszProgressTitle="Copying files";
        if(SHFileOperation(lpFileOp)||abort)
            MessageBox("Operation aborted");
    у меня так работало....
    плюс если встречается слеш (\) писать два слеша (\\) ...

    Всего записей: 9 | Зарегистр. 31-03-2008 | Отправлено: 23:31 10-04-2008
    Ashi



    Junior Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Господа тока начинаю изучать. Нужда заставила. Посему сильно не бейте. Но облазил пол иннета и не смог найти в чем ошибка. И почему в в визлах 2008 происходит затык на след строчке  
     

    Код:
     
    void CWelcomeView::OnDraw(CDC* pDC)
    {
        CString welcome_string = "Welcome to C++";
        CWelcomeDoc* pDoc = GetDocument();
        ASSERT_VALID(pDoc);
        pDC->TextOutW(0,0,welcome_string,1);
        if (!pDoc)
            return;
     
    }
     

     
    error C2440: 'initializing' : cannot convert from 'const char [15]' to 'ATL::CStringT<BaseType,StringTraits>'    

    Всего записей: 88 | Зарегистр. 17-01-2006 | Отправлено: 14:57 11-04-2008 | Исправлено: Ashi, 15:01 11-04-2008
    distance

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Ashi
    Сравни с правильным присаиванием:
    Basic CString Operations

    Всего записей: 878 | Зарегистр. 28-03-2004 | Отправлено: 17:10 11-04-2008
    scai

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Ashi
    Отключи юникод)
    в свойствах проекта

    Всего записей: 9 | Зарегистр. 31-03-2008 | Отправлено: 23:50 11-04-2008
    marrow1

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    scai
    спасибо большое. Разобрался наконец.

    Всего записей: 801 | Зарегистр. 21-12-2006 | Отправлено: 21:57 13-04-2008
    Ashi



    Junior Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору

    Цитата:
    Господа тока начинаю изучать. Нужда заставила. Посему сильно не бейте. Но облазил пол иннета и не смог найти в чем ошибка. И почему в в визлах 2008 происходит затык на след строчке  
     
     
    Код:  
    void CWelcomeView::OnDraw(CDC* pDC)  
    {  
        CString welcome_string = "Welcome to C++";  
        CWelcomeDoc* pDoc = GetDocument();  
        ASSERT_VALID(pDoc);  
        pDC->TextOutW(0,0,welcome_string,1);  
        if (!pDoc)  
            return;  
     
    }  
     
     
     
     
    error C2440: 'initializing' : cannot convert from 'const char [15]' to ATL::CStringT<BaseType,StringTraits>'  

     
    Помогло то что советовал distance. + не TextOutW а TextOut

    Всего записей: 88 | Зарегистр. 17-01-2006 | Отправлено: 16:22 14-04-2008
    hazor90



    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Здравствуйте.
    Помогите новичку.
    Такя проблема, изначально программа написана под консоль, в консоли работает нормально, хотел перевести в Windows но, выдает ошибки при компиляции, вот код cpp файла, описания исп. ф-й лежат в .h файле в разделе public:.
     

    Код:
     
    #include <vcl.h>
    #pragma hdrstop
     
    #include "Unit2.h"
    //---------------------------------------------------------------------------
    #pragma package(smart_init)
    #pragma resource "*.dfm"
    #include <iostream>
    #include <cctype>
    #include <cstring>
    TForm2 *Form2;
    //---------------------------------------------------------------------------
    __fastcall TForm2::TForm2(TComponent* Owner)
        :TForm(Owner)
    {
    //Конструктор
    template <class PType> parser<PType>::parser()
    {
        int i;
        exp_ptr = 0;
        for(i=0; i<NUMVARS; i++)
        {
        vars[i] = (PType) 0;
        }
     
    }
    //Входная точка анализатора
    template <class PType> PType parser<PType>::eval_exp(char *exp)
    {
        PType result;
        exp_ptr = exp;
        get_token();
        if(!*token)
        {
        serror(NOEXP); //Выроженние отсуцтвует
        return (PType) 0;
        }
        eval_exp1(result);
        if(*token) serror(SERROR); //Последняя лексема должна быть нулевой
        return result;
    }
    //Обработать присваивание
    template <class PType> void parser<PType>::eval_exp1(PType &result)
    {
        int slot;
        typesT ttok_type;
        char temp_token[80];
        if(tok_type == VARIABLE)
        {
             //Сохранить старую лексему
             strcpy(temp_token, token);
             ttok_type = tok_type;
             //Вычислить индекс переменной
             slot =  toupper(*token) - 'A';
             get_token();
             if(*token != '=')// Не присваивание
             {
                putback(); // Возвратить текущую лексему
                // Восстановить старую лексему
                strcpy(token, temp_token);
                tok_type = ttok_type;
             }
             else
             {
                 get_token(); // Получить следующую часть выражения
                 eval_exp2(result);
                 vars[slot] = result;
                 return;
             }
        }
        eval_exp2(result);
    }
    //Сложить или вычесть два члена
    template <class PType> void parser<PType>::eval_exp2(PType &result)
    {
        register char op;
        PType temp;
        eval_exp3(result);
        while((op = *token) == '+' || op == '-')
        {
            get_token();
            eval_exp3(temp);
            switch(op)
            {
                case '-':
                result = result - temp;
                break;
                case '+':
                result = result + temp;
                break;
            }
        }
    }
    //Перемножить или поделить два сомножителя
    template <class PType> void parser<PType>::eval_exp3(PType &result)
    {
      register char op;
      PType temp;
      eval_exp4(result);
      while((op = *token) == '*' || op == '/' || op == '%')
      {
          get_token();
          eval_exp4(temp);
          switch(op)
          {
              case '*':
              result = result * temp;
              break;
              case '/':
              if(!temp) serror(DIVZERO);
              else result = result / temp;
              break;
              case '%':
              result = (int) result % (int) temp;
              break;
          }
      }
    }
    //Обработка степени
    template <class PType> void parser<PType>::eval_exp4(PType &result)
    {
        PType temp, ex;
        register int t;
        eval_exp5(result);
        if(*token == '^')
        {
            get_token();
            eval_exp4(temp);
            ex = result;
            if(temp == (PType) 0)
            {
                result = (PType) 1;
                return;
            }
            for(t=(int)temp-1; t>0; --t)
            {
                result = result * ex;
            }
        }
    }
    //Оценить унарный + или -
    template <class PType> void parser<PType>::eval_exp5(PType &result)
    {
        register char op;
        op = 0;
        if((tok_type == OPERATOR) && *token == '+' || *token == '-')
        {
            op = *token;
            get_token();
        }
        eval_exp6(result);
        if(op == '-') result = -result;
    }
    //Обработка вырожения в скобках
    template <class PType> void parser<PType>::eval_exp6(PType &result)
    {
        if((*token == '('))
        {
            get_token();
            eval_exp2(result);
            if(*token != ')')
            {
                serror(PARENS);
            }
            get_token();
        }
        else atom(result);
    }
    //Получить значение числа или переменной
    template <class PType> void parser<PType>::atom(PType &result)
    {
        switch(tok_type)
        {
            case VARIABLE:
            result = find_var(token);
            get_token();
            case NUMBER:
            result = (PType) atof(token);
            get_token();
            return;
            default:
            serror(SERROR);
        }
    }
    //Возвратить лексему во входной поток
    template <class PType> void parser<PType>::putback()
    {
        char *t;
        t = token;
        for(; *t; t++)
        {
            exp_ptr--;
        }
    }  
    //Сообщить о синтаксической ошибке
    template <class PType>void parser<PType>::serror(errorsT error)
    {
       static char *e[]= {"Syntax error", "Unbalanced Parentheses",
       "No expression Present", "Division by zero"};
       cout << e[error] << endl;
    }
    //Извлеч следующую лексему
    template <class PType> void parser<PType>::get_token()
    {
        register char *temp;
        tok_type = UNDEFTOK; // неизвестный тип
        temp = token;
        *temp = '\0';
        if(!*exp_ptr) return; //Конец выражения
        while(isspace(*exp_ptr))//Пропустить пробелы
        {
            ++exp_ptr;
        }
        if(strchr("+-*/%^=()", *exp_ptr))
        {
            tok_type = OPERATOR;
            *temp++ = *exp_ptr++;//Перейти к следующему символу
        }
     
        else if(isalpha(*exp_ptr))
        {
        while(!isdelim(*exp_ptr))
        {*temp++ = *exp_ptr++;}
        tok_type = VARIABLE;
        }
     
        else if(isdigit(*exp_ptr))
        {
            while(!isdelim(*exp_ptr)) { *temp++ = *exp_ptr++; }
            tok_type = NUMBER;
        }
        *temp = '\0';
    }
    //Возвратить true, если с - разделитель
    template <class PType> bool parser<PType>::isdelim(char c)
    {
              if(strchr(" +-/*%^=()", c) || c == 9 || c == '\r' || c == 0)  //Строка 240
        { return true; }
        return false;
    }
    //Возвратить значение переменной
    template <class PType> PType parser<PType>::find_var(char *s)
    {
        if(!isalpha(*s))
        {
            serror(SERROR);
            return (PType) 0;
        }
        return vars[toupper(*token) - 'A'];
    }
     
     
        __fastcall TForm2(TComponent* Owner);
    };
     
     
     

     
    Выдает 2 ошибки при компиляции:
    Unit2.cpp(17):E2316'_fastcall::TForm2(TComponent *)' is not a member of 'TForm2'
    Unit2.cpp(262):E2186 Unexpected end of file in comment started on line 240
     
    С 1 ошибкой вообще не знаю что делать, понятно, что _fastcall::TForm2(TComponent *) не является элементом 'TForm2', но вот как это исправить не понимаю.
    Поиск результатов не дал, юзаю Borland Developer Studio 2006
    Программа из книги Фридман C++ архив программ

    Всего записей: 6 | Зарегистр. 19-10-2007 | Отправлено: 21:25 14-04-2008 | Исправлено: hazor90, 21:30 14-04-2008
    Lyrik

    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    hazor90

    Цитата:
    Unexpected end of file in comment started on line 240

    Написано, что в 240 стартует коммент, и вот он: /*. напиши так:

    Код:
    if(strchr(" +-\/*%^=()", c) || c == 9 || c == '\r' || c == 0)  //Строка 240

    хотя как-то странно, компилер не должен видеть коммент внутри строки, по крайней мере студия мне такого не выдавала ни разу о_О

    Цитата:
    Unit2.cpp(17):E2316'_fastcall::TForm2(TComponent *)' is not a member of 'TForm2'

    может стоит попробовать закомментить строку

    Цитата:
      __fastcall TForm2(TComponent* Owner);

    хотя я не уверен, не писал на борланде

    Всего записей: 388 | Зарегистр. 04-04-2006 | Отправлено: 23:59 14-04-2008
    susuman

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    hazor90

    Цитата:
    Выдает 2 ошибки при компиляции:
    Unit2.cpp(17):E2316'_fastcall::TForm2(TComponent *)' is not a member of 'TForm2'
    Unit2.cpp(262):E2186 Unexpected end of file in comment started on line 240
     

     
    Про первую ошибку сказать что-то сложно без .h (Unit2.h).
    Вторая - "/*" - для компилятор это начало коментария, поменяй их местами: "*/"
    Странно, но при такой ошибке она и в консоли не должна работать.

    Всего записей: 12 | Зарегистр. 21-12-2005 | Отправлено: 00:11 15-04-2008
    Wenzel



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Подскажите пожалуйста, что не так? При компиляции в VS2008 выдает ошибку
    Код:
     
    1>Compiling...
    1>Modeless.cpp
    1>.\Neo\GUI\Modeless.cpp(35) : error C2906: 'const AFX_MSGMAP *CModWin<DIALOG>::GetThisMessageMap(void)' : explicit specialization requires 'template <>'
    1>        with
    1>        [
    1>            DIALOG=CDialog
    1>        ]

     
    Если закомментировать первый блок BEGIN_MESSAGE_MAP-END_MESSAGE_MAP, то выдает
    Код:
    1>.\Neo\GUI\Modeless.cpp(40) : error C2906: 'const AFX_MSGMAP *CModWin<DIALOG>::GetThisMessageMap(void)' : explicit specialization requires 'template <>'
    1>        with
    1>        [
    1>            DIALOG=CResizableDialog
    1>        ]
     

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

    Код:
    The following sample generates C2906:
     
      Copy Code  
    // C2906.cpp
    // compile with: /c
    template<class T> class X{};   // primary template
    class X<int> { }   // C2906
    template<> class X<int> { };   // new syntax
     

    Гуглил, но так ничего и не добился в результате
    Мне бы один блок из этих мапов заставить компилироваться, дальше сам постараюсь разобраться.
     
    файлы:
    modeless.cpp

    Код:
    #include "stdafx.h"
    #include "Modeless.h"
    #include "emule.h"
    #include "emuleDlg.h"
    #include "UserMsgs.h"
     
    CWnd* GetEmuleDlg() {return theApp.emuledlg;}
     
    #ifdef _DEBUG
    #undef THIS_FILE
    static char THIS_FILE[]=__FILE__;
    #define new DEBUG_NEW
    #endif
     
    // NEO: MLD - [ModelesDialogs] -- Xanatos -->
     
    BEGIN_MESSAGE_MAP(CModWin<CDialog>, CDialog)
        ON_COMMAND(IDOK, OnOK)
        ON_COMMAND(IDCANCEL, OnCancel)
    END_MESSAGE_MAP()
     
    BEGIN_MESSAGE_MAP(CModWin<CResizableDialog>, CResizableDialog)
        ON_COMMAND(IDOK, OnOK)
        ON_COMMAND(IDCANCEL, OnCancel)
    END_MESSAGE_MAP()
     
    BEGIN_MESSAGE_MAP(CModSht<CPropertySheet>, CPropertySheet)
        ON_COMMAND(IDOK, OnOK)
        ON_COMMAND(IDCANCEL, OnCancel)
    END_MESSAGE_MAP()
     
    BEGIN_MESSAGE_MAP(CModSht<CResizableSheet>, CResizableSheet)
        ON_COMMAND(IDOK, OnOK)
        ON_COMMAND(IDCANCEL, OnCancel)
    END_MESSAGE_MAP()
     
    BEGIN_MESSAGE_MAP(CModSht<CListViewWalkerPreferenceSheet>, CListViewWalkerPreferenceSheet)
        ON_COMMAND(IDOK, OnOK)
        ON_COMMAND(IDCANCEL, OnCancel)
    END_MESSAGE_MAP()
     
    BEGIN_MESSAGE_MAP(CModSht<CListViewWalkerPropertySheet>, CListViewWalkerPropertySheet)
        ON_COMMAND(IDOK, OnOK)
        ON_COMMAND(IDCANCEL, OnCancel)
    END_MESSAGE_MAP()
     
    BEGIN_MESSAGE_MAP(CModWlkSht<CListViewWalkerPreferenceSheet>, CListViewWalkerPreferenceSheet)
        ON_COMMAND(IDOK, OnOK)
        ON_COMMAND(IDCANCEL, OnCancel)
    END_MESSAGE_MAP()
     
    BEGIN_MESSAGE_MAP(CModWlkSht<CListViewWalkerPropertySheet>, CListViewWalkerPropertySheet)
        ON_COMMAND(IDOK, OnOK)
        ON_COMMAND(IDCANCEL, OnCancel)
    END_MESSAGE_MAP()
     

     
    modeless.h

    Код:
     
    #pragma once
     
    #include "ResizableLib/ResizableSheet.h"
    #include "ResizableLib/ResizableDialog.h"
    #include "ListViewWalkerPropertySheet.h"
    #include "ListViewWalkerPreferenceSheet.h"
     
    CWnd* GetEmuleDlg();
     
    // NEO: MLD - [ModelesDialogs] -- Xanatos -->
     
    template<class WINDOW>
    class CModWnd : public WINDOW {
     
    public:
        CModWnd() {
            m_bDeleteOnClose = TRUE;
            m_bActive = FALSE;
        }
     
        void OpenDialog(UINT bDeleteOnClose = TRUE) {
            m_bDeleteOnClose = bDeleteOnClose;
            if (!m_bActive){
                m_bActive = TRUE;
                CallCreate();
            }
            ShowWindow(SW_SHOW);
            SetFocus();
        }
        virtual void CloseDialog() {
            if (m_bActive)
                DestroyWindow();
        }
        bool IsDialogOpen() {  
            return (m_bActive == TRUE);  
        }
     
    protected:
        virtual void CallCreate() = 0;
        virtual BOOL OnInitDialog(){
            UINT old_nFlags = m_nFlags;
            m_nFlags |= WF_CONTINUEMODAL;
            BOOL bResult = WINDOW::OnInitDialog();
            m_nFlags = old_nFlags;
            return bResult;
        }
        afx_msg void OnOK()    {
            UpdateData();
            DestroyWindow();
        }
        afx_msg void OnCancel()    {
            DestroyWindow();
        }
        afx_msg void PostNcDestroy() {
            m_bActive = FALSE;
            if (m_bDeleteOnClose)
                delete this;
        }
     
        BOOL            m_bActive;
        BOOL            m_bDeleteOnClose;
    };
     
    template<class DIALOG>
    class CModWin : public CModWnd<DIALOG> {
     
    public:
        CModWin(UINT nIDTemplate, CWnd* /*pParent*/ = NULL):CModWnd<DIALOG>(){
            m_nIDTemplate = nIDTemplate;
        }
     
    protected:
        virtual void CallCreate() {
            Create(m_nIDTemplate, GetEmuleDlg());
        }
        DECLARE_MESSAGE_MAP()
     
        UINT            m_nIDTemplate;
    };
     
    template<class SHEET>
    class CModSht : public CModWnd<SHEET> {
     
    public:
        CModSht():CModWnd<SHEET>() {}
     
    protected:
        virtual void CallCreate() {
            Create(GetEmuleDlg(), WS_SYSMENU | WS_POPUP | WS_CAPTION | DS_MODALFRAME | DS_CONTEXTHELP | WS_VISIBLE | WS_MINIMIZEBOX);
        }
        virtual BOOL OnInitDialog(){
            // Modeless property sheets don't have Ok and Cancel buttons by default
            // This little trick fulls the property sheet into thinking it's modal
            // during it's init, so that it doesn't disable the Ok and Cancel buttons
            BOOL old_bModeless = m_bModeless;
            m_bModeless = FALSE;
            BOOL bResult = CModWnd<SHEET>::OnInitDialog();
            m_bModeless = old_bModeless;
            return bResult;
        }
        afx_msg void OnOK()    {
            SendMessage(WM_COMMAND, ID_APPLY_NOW);
            CModWnd<SHEET>::OnOK();
        }
        DECLARE_MESSAGE_MAP()
    };
     
    template<class WLK_SHEET>
    class CModWlkSht : public CModSht<WLK_SHEET> {
     
    public:
        CModWlkSht(CListCtrlItemWalk* pListCtrl):CModSht<WLK_SHEET>() {
            m_pListCtrl = pListCtrl;
        }
     
        void DropControl() {
            m_pListCtrl = NULL;  
            m_bDeleteOnClose = TRUE;  
            if(!IsDialogOpen())  
                delete this;
        }
    protected:
        DECLARE_MESSAGE_MAP()
    };
     
    typedef CModWin<CDialog> CModDialog;
    typedef CModWin<CResizableDialog> CModResizableDialog;
    typedef CModSht<CPropertySheet> CModPropertySheet;
    typedef CModSht<CResizableSheet> CModResizableSheet;
    typedef CModWlkSht<CListViewWalkerPreferenceSheet> CModListViewWalkerPreferenceSheet;
    typedef CModWlkSht<CListViewWalkerPropertySheet> CModListViewWalkerPropertySheet;
     
     

    Всего записей: 587 | Зарегистр. 10-08-2004 | Отправлено: 02:06 16-04-2008
    hazor90



    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    susuman,Lyrik Спасибо, поменял /* местами - помогло

    Цитата:
    может стоит попробовать закомментить строку

    Это обработка при старте формы, в ней мой код содержится, врятли это хорошая идея, при комменте этой строки компилятор пишет  
    Declaration terminated incorrectly

    Цитата:
    Про первую ошибку сказать что-то сложно без .h (Unit2.h).

    Вот код Unit2.h:

    Код:
     
    //#ifndef Unit2H
    #define Unit2H
    //---------------------------------------------------------------------------
    #include <Classes.hpp>
    #include <Controls.hpp>
    #include <StdCtrls.hpp>
    #include <Forms.hpp>
    #include <iostream>
    #include <cctype>
    #include <cstring>
    using  namespace std;
    //---------------------------------------------------------------------------
    class TForm2 : public TForm
    {
    __published:    // IDE-managed Components
        TButton *Button1;
        TEdit *Edit1;
        TLabel *Label1;
    private:    // User declarations
    public: template <class PType>
    class parser {
    static const int NUMVARS = 26;
    enum typesT {UNDEFTOK, OPERATOR, NUMBER, VARIABLE};
    enum errorsT {SERROR, PARENS, NOEXP, DIVZERO};
     
    char *exp_ptr; //Указатель на вырожение
    char token[80]; //содержится текущая лексема
    typesT tok_type; //Тип лексемы
    PType vars[NUMVARS];//Хранит значения переменных
     
    void eval_exp1(PType &result);
    void eval_exp2(PType &result);
    void eval_exp3(PType &result);
    void eval_exp4(PType &result);
    void eval_exp5(PType &result);
    void eval_exp6(PType &result);
    void atom(PType &result);
    void get_token();
    void putback(); // Возвратить текушую лексему
    void serror(errorsT error);
    PType find_var(char *s);
    bool isdelim(char c);
    public:
    parser();
    PType eval_exp(char *exp);
    };
     
     
    };
     

    #ifndef Unit2H закомментен, потому, что компилятор выдавал такую ошибку:
    Unexpected end o file in conditional started online 2
     
     
     
     
     

    Всего записей: 6 | Зарегистр. 19-10-2007 | Отправлено: 12:34 16-04-2008
    raimur

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    люди добрые хелп плиз!!!горю на носу сессия а проблем итак хоть отбавляй!!!уже зачетные задания требуют!!!Помогите пожалуйста решить две задачки!!!
     во всех заданиях нужно использовать методы:
     - метод инициализаций Init;
     - ввод с клавиатуры Read;
     - вывод на юкран Display;
     - преобразование в строку toString;
    все задания должны быть реализованы 3 способами:
     - тип данных представляется структурой с необходимыми полями, а операций реализуются как внешние функции, которые получают обьекты данного типа в качестве аргументов;
     - как класс с закрытыми полями, где операции реализуются как методы класса;
     - инкапсулировать поля класса в независимой структуре и в ней реализовать методы Init();Read();Display();toString();в основном классе должно быть одно поле данных,представленное объектом-структурой;
     1)Создать класс Triangle для представления треугольника.поля данных должны включать углы и стороны.требуется реализоать операции: получения и изменения полей данных, вычисления площади,вычисления периметра,вычисления высот,а также определения вида треугольника(равносторонний,равнобедренный,прямоугольный).
     2)Создать класс Fraction для работы с дробными числами.Число должно быть представленно двумя полями: целая часть-длинное число со знаком,дробная часть - беззнаковое короткое целое.Реализоать арифметические операции сложения,вычитания,умножения и операции сравнения.
     Заранее спасибо!

    Всего записей: 8 | Зарегистр. 16-04-2008 | Отправлено: 13:16 16-04-2008
    chintoi

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    как в списке аргументов указать ссылку на файловый поток и как потом обращаться к потоку?

    Всего записей: 6 | Зарегистр. 07-04-2008 | Отправлено: 18:07 16-04-2008
    c0d3r



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    chintoi
     

    Цитата:
    как в списке аргументов указать ссылку на файловый поток и как потом обращаться к потоку?

     
    void foo(std::istream &stream);
     
    ?

    Всего записей: 132 | Зарегистр. 24-08-2004 | Отправлено: 08:28 17-04-2008
    chintoi

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    спасибо! пособия требуют детального разбора в структуре языка для пользования, а конкретных вещей  из них быстро не узнать(

    Всего записей: 6 | Зарегистр. 07-04-2008 | Отправлено: 08:54 17-04-2008
    mastaflow

    Newbie
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Как стилистически лучше писать?

    Код:
    array[0] = 50;
    for(int i = 1; i < size; i++) {
        array[i] = i;
    }

    или

    Код:
     
    for(int i = 0; i < size; i++) {
        if(!i) array[i] = 50;
        else array[i] = i;
    }

    или

    Код:
     
    for(int i = 0; i < size; i++) {
        array[i] = i ? i : 50;
    }

    Всего записей: 24 | Зарегистр. 24-05-2007 | Отправлено: 13:10 20-04-2008 | Исправлено: mastaflow, 13:14 20-04-2008
    master20

    Newbie
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    mastaflow
    1 вариант лучше и быстрее

    Всего записей: 31 | Зарегистр. 05-01-2008 | Отправлено: 15:22 20-04-2008
    Bender_R



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    mastaflow
    я бы предпочел первый

    Всего записей: 55 | Зарегистр. 03-01-2006 | Отправлено: 21:42 20-04-2008
    Открыть новую тему     Написать ответ в эту тему

    Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322

    Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Вопросы по программированию на C/С++


    Реклама на форуме Ru.Board.

    Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
    Modified by Ru.B0ard
    © Ru.B0ard 2000-2024

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru