Từ 1 tới 2 trên tổng số 2 kết quả

Đề tài: Tại sao file exe tạo được lại báo lỗi khi chạy và làm thế nào để tạo nút stop

  1. #1
    Ngày gia nhập
    01 2008
    Bài viết
    1

    Mặc định Tại sao file exe tạo được lại báo lỗi khi chạy và làm thế nào để tạo nút stop

    Mình có đề tài mô phỏng mạch RS flip-flop bằng 1 giao diện có 2 ký tự đầu vào và 1 nút Run. Mình đã tạo được file exe nhưng khi chạy nó lại báo lỗi như sau:
    Debug Asertion Failed!
    Program: ...Grapth\Debug\Grapth.exe
    File: afx.inl
    Line: 170
    Đoạn chương trình như sau:

    C++ Code:
    1. // GrapthDlg.cpp : implementation file
    2. //
    3.  
    4. #include "stdafx.h"
    5. #include "Grapth.h"
    6. #include "GrapthDlg.h"
    7.  
    8. #ifdef _DEBUG
    9. #define new DEBUG_NEW
    10. #undef THIS_FILE
    11. static char THIS_FILE[] = __FILE__;
    12. #endif
    13.  
    14. /////////////////////////////////////////////////////////////////////////////
    15. // CAboutDlg dialog used for App About
    16.  
    17. class CAboutDlg : public CDialog
    18. {
    19.     public:
    20.         CAboutDlg();
    21.  
    22.         // Dialog Data
    23.         //{{AFX_DATA(CAboutDlg)
    24.         enum { IDD = IDD_ABOUTBOX };
    25.         //}}AFX_DATA
    26.  
    27.         // ClassWizard generated virtual function overrides
    28.         //{{AFX_VIRTUAL(CAboutDlg)
    29.         protected:
    30.         virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
    31.         //}}AFX_VIRTUAL
    32.  
    33.     // Implementation
    34.     protected:
    35.         //{{AFX_MSG(CAboutDlg)
    36.         //}}AFX_MSG
    37.         DECLARE_MESSAGE_MAP()
    38. };
    39.  
    40. CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
    41. {
    42.     //{{AFX_DATA_INIT(CAboutDlg)
    43.     //}}AFX_DATA_INIT
    44. }
    45.  
    46. void CAboutDlg:oDataExchange(CDataExchange* pDX)
    47. {
    48.     CDialog:oDataExchange(pDX);
    49.     //{{AFX_DATA_MAP(CAboutDlg)
    50.     //}}AFX_DATA_MAP
    51. }
    52.  
    53. BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
    54. //{{AFX_MSG_MAP(CAboutDlg)
    55. // No message handlers
    56. //}}AFX_MSG_MAP
    57. END_MESSAGE_MAP()
    58.  
    59. /////////////////////////////////////////////////////////////////////////////
    60. // CGrapthDlg dialog
    61.  
    62. CGrapthDlg::CGrapthDlg(CWnd* pParent /*=NULL*/)
    63. : CDialog(CGrapthDlg::IDD, pParent)
    64. {
    65.     //{{AFX_DATA_INIT(CGrapthDlg)
    66.     m_S = _T("");
    67.     m_R = _T("");
    68.     //}}AFX_DATA_INIT
    69.     // Note that LoadIcon does not require a subsequent DestroyIcon in Win32
    70.     m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
    71. }
    72.  
    73. void CGrapthDlg:oDataExchange(CDataExchange* pDX)
    74. {
    75.     CDialog:oDataExchange(pDX);
    76.     //{{AFX_DATA_MAP(CGrapthDlg)
    77.     DDX_Control(pDX, IDC_EDIT_RESET, m_CR);
    78.     DDX_Control(pDX, IDC_EDIT_SET, m_CS);
    79.     DDX_Text(pDX, IDC_EDIT_SET, m_S);
    80.     DDX_Text(pDX, IDC_EDIT_RESET, m_R);
    81.     //}}AFX_DATA_MAP
    82. }
    83.  
    84. BEGIN_MESSAGE_MAP(CGrapthDlg, CDialog)
    85.     //{{AFX_MSG_MAP(CGrapthDlg)
    86.     ON_WM_SYSCOMMAND()
    87.     ON_WM_PAINT()
    88.     ON_WM_QUERYDRAGICON()
    89.     ON_EN_CHANGE(IDC_EDIT_SET, OnChangeEditSet)
    90.     ON_BN_CLICKED(IDC_BUTTON_RUN, OnButtonRun)
    91.     ON_WM_DESTROY()
    92.     ON_WM_TIMER()
    93.     //}}AFX_MSG_MAP
    94. END_MESSAGE_MAP()
    95.  
    96. /////////////////////////////////////////////////////////////////////////////
    97. // CGrapthDlg message handlers
    98.  
    99. BOOL CGrapthDlg::OnInitDialog()
    100. {
    101.     CDialog::OnInitDialog();
    102.  
    103.     // Add "About..." menu item to system menu.
    104.  
    105.     // IDM_ABOUTBOX must be in the system command range.
    106.     ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
    107.     ASSERT(IDM_ABOUTBOX < 0xF000);
    108.  
    109.     CMenu* pSysMenu = GetSystemMenu(FALSE);
    110.     if (pSysMenu != NULL)
    111.     {
    112.         CString strAboutMenu;
    113.         strAboutMenu.LoadString(IDS_ABOUTBOX);
    114.         if (!strAboutMenu.IsEmpty())
    115.         {
    116.             pSysMenu->AppendMenu(MF_SEPARATOR);
    117.             pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
    118.         }
    119.     }
    120.  
    121.     // Set the icon for this dialog. The framework does this automatically
    122.     // when the application's main window is not a dialog
    123.     SetIcon(m_hIcon, TRUE); // Set big icon
    124.     SetIcon(m_hIcon, FALSE); // Set small icon
    125.  
    126.     // TODO: Add extra initialization here
    127.     CWnd*pWnd=new CWnd();
    128.     pWnd=GetDlgItem(IDC_EDIT_SET);
    129.     UpdateData(FALSE);
    130.     k=0;
    131.  
    132.     return TRUE; // return TRUE unless you set the focus to a control
    133. }
    134.  
    135. void CGrapthDlg::OnSysCommand(UINT nID, LPARAM lParam)
    136. {
    137.     if ((nID & 0xFFF0) == IDM_ABOUTBOX)
    138.     {
    139.         CAboutDlg dlgAbout;
    140.         dlgAbout.DoModal();
    141.     }
    142.     else
    143.     {
    144.         CDialog::OnSysCommand(nID, lParam);
    145.     }
    146. }
    147.  
    148. // If you add a minimize button to your dialog, you will need the code below
    149. // to draw the icon. For MFC applications using the document/view model,
    150. // this is automatically done for you by the framework.
    151.  
    152. void CGrapthDlg::OnPaint()
    153. {
    154.     if (IsIconic())
    155.     {
    156.         CPaintDC dc(this); // device context for painting
    157.  
    158.         SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);
    159.  
    160.         // Center icon in client rectangle
    161.         int cxIcon = GetSystemMetrics(SM_CXICON);
    162.         int cyIcon = GetSystemMetrics(SM_CYICON);
    163.         CRect rect;
    164.         GetClientRect(&rect);
    165.         int x = (rect.Width() - cxIcon + 1) / 2;
    166.         int y = (rect.Height() - cyIcon + 1) / 2;
    167.  
    168.         // Draw the icon
    169.         dc.DrawIcon(x, y, m_hIcon);
    170.     }
    171.     else
    172.     {
    173.         CDialog::OnPaint();
    174.     }
    175. }
    176.  
    177. // The system calls this to obtain the cursor to display while the user drags
    178. // the minimized window.
    179. HCURSOR CGrapthDlg::OnQueryDragIcon()
    180. {
    181.     return (HCURSOR) m_hIcon;
    182. }
    183.  
    184. int CGrapthDlg::Kiemtra(CString str)
    185. {
    186.     int leng=str.GetLength();
    187.     if(str!="")
    188.     {
    189.         for(int i=leng-1;i>=0;i--)
    190.         {
    191.             if((str.GetAt(i)!='0')&&(str.GetAt(i)!='1'))
    192.                 return 0;
    193.         }
    194.     }
    195.     return 1;
    196. }
    197.  
    198. void CGrapthDlg::OnChangeEditSet()
    199. {
    200.     // TODO: If this is a RICHEDIT control, the control will not
    201.     // send this notification unless you override the CDialog::OnInitDialog()
    202.     // function and call CRichEditCtrl().SetEventMask()
    203.     // with the ENM_CHANGE flag ORed into the mask.
    204.  
    205.     // TODO: Add your control notification handler code here
    206.     UpdateData(TRUE);
    207.     int lengS=m_S.GetLength();
    208.     if(Kiemtra(m_S)==0)
    209.     {
    210.         for(int s=lengS-1;s>=0;s--)
    211.         {
    212.             if((m_S.GetAt(s)!='0')&&(m_S.GetAt(s)!='1'))
    213.             m_S.Delete(s);
    214.         }
    215.         UpdateData(FALSE);
    216.         lengS=m_S.GetLength();
    217.         m_CS.SetSel(lengS,lengS);
    218.         MessageBox(_T("Tin hieu dau vao S chi co the la 0 hoac la 1 ! Vui long nhap lai ! "),_T("Chu y "));
    219.     }
    220. }
    221.  
    222. void CGrapthDlg:rawLine(CDC *pDC, int x1, int y1, int x2, int y2, COLORREF crColor)
    223. {
    224.     CPen *pPen;
    225.     CPen *pOldPen;
    226.     pPen = new CPen(PS_SOLID,2,crColor);
    227.     pOldPen= pDC->SelectObject(pPen);
    228.     pDC->MoveTo(x1,y1);
    229.     pDC->LineTo(x2,y2);
    230.     delete pDC->SelectObject(pOldPen);
    231. }
    232.  
    233. void CGrapthDlg::OnButtonRun()
    234. {
    235.     // TODO: Add your control notification handler code here
    236.     m_dir=1;
    237.     SetTimer(ID_CLOCK_TIMER,100,NULL);
    238. }
    239.  
    240. void CGrapthDlg::OnDestroy()
    241. {
    242.     CDialog::OnDestroy();
    243.  
    244.     // TODO: Add your message handler code here
    245.     KillTimer(ID_CLOCK_TIMER);
    246. }
    247.  
    248. void CGrapthDlg::OnTimer(UINT nIDEvent)
    249. {
    250.     // TODO: Add your message handler code here and/or call default
    251.     CClientDC dc(this);
    252.     UpdateData(TRUE);
    253.     if(m_dir==1)
    254.     {
    255.         k+=1;
    256.         if(m_S.GetAt(k)=='0')
    257.         DrawLine(&dc,50,50,60,50,RGB(255,0,0));
    258.         DrawLine(&dc,50,50,60,50,RGB(0,0,255));
    259.         //k+=1;
    260.     }
    261.     CDialog::OnTimer(nIDEvent);
    262. }
    Và mình muốn tạo 1 nút Stop để dừng nhưng chưa biết viết thế nào. Các bạn xem giúp mình nhé.

    Lần sau bạn nhớ đem code vào tag code nha.
    Đã được chỉnh sửa lần cuối bởi meoconlongvang : 19-10-2008 lúc 05:19 PM. Lý do: Đưa code vào tag code

  2. #2
    Ngày gia nhập
    07 2008
    Nơi ở
    /media/Anime
    Bài viết
    2,288

    Đối với mấy bài MFC bạn nên up cả project gửi lên đây vì chỉ được code ko thôi thì mọi người rât khó tạo lại project để debug cho bạn.
    Càng yêu mèo thì mèo càng mập. Mèo càng mập ta lại càng yêu.

Các đề tài tương tự

  1. stop 1 vòng lặp đang chạy trong lập trình C#?
    Gửi bởi ko1ko1 trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 16
    Bài viết cuối: 02-06-2013, 05:29 PM
  2. Trả lời: 3
    Bài viết cuối: 10-04-2013, 08:06 AM
  3. Giúp em cách stop chương trình đang chạy...
    Gửi bởi Shizukanabi trong diễn đàn Nhập môn lập trình C#, ASP.NET
    Trả lời: 1
    Bài viết cuối: 03-05-2012, 03:57 PM
  4. code không lỗi nhưng chạy bị lỗi[DSLK,khi nhập vào 2 số là bị stop]
    Gửi bởi fithou91192 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 3
    Bài viết cuối: 04-11-2011, 07:33 AM
  5. Phân biệt các nút trong mảng nút như thế nào?
    Gửi bởi trungducdang trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 6
    Bài viết cuối: 26-10-2009, 11:06 AM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn