[Visual C++] dziwny błąd

0

W czasie próby uruchomienia programu W Visual C++ wyskakuje okienko z błędem (pokazanym na rysunku). Wiecie o co może chodzić, przecież ten plik w którym pokazuje się błąd jest wbudowanym plikiem Visuala (plik dlgdata.cpp).
user image

0

A od czego jest debugger? :)

0

O ile dobrze pamiętam taki błąd pojawia się przy utracie wskaźnika do pamięci. Np. jeśli rezerwujesz pamięć

byte * wsk = new byte[100];

po przesunieciu wskaznika i probie zwolnienia pamieci

wsk++;
delete wsk;

wyskoczy taki wlasnie blad

0

najdziwniejsze jest to, że na innym komputerze błąd ten się nie pojawiał, a ja na swój skopiowałem tylko pliki .cpp i .h i z nich stworzyłem projekt, więc może to stało na przeszkodzie.
Poza tym błąd ten znika gdy usuną ten kod:

void CIndeksDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CIndeksDlg)
	DDX_Text(pDX, IDC_BIOLOGIA, m_biol);
	DDV_MinMaxFloat(pDX, m_biol, 0.f, 6.f);
	DDX_Text(pDX, IDC_FIZYKA, m_fiz);
	DDV_MinMaxFloat(pDX, m_fiz, 0.f, 6.f);
	DDX_Text(pDX, IDC_GEOGRAFIA, m_geo);
	DDV_MinMaxFloat(pDX, m_geo, 0.f, 6.f);
	DDX_Text(pDX, IDC_HISTORIA, m_hist);
	DDV_MinMaxFloat(pDX, m_hist, 0.f, 6.f);
	DDX_Text(pDX, IDC_MATEMATYKA, m_mat);
	DDV_MinMaxFloat(pDX, m_mat, 0.f, 6.f);
	DDX_Text(pDX, IDC_POLSKI, m_pol);
	DDV_MinMaxFloat(pDX, m_pol, 0.f, 6.f);
	DDX_Text(pDX, IDC_OPIS, m_opis);
	DDX_Text(pDX, IDC_SREDNIA, m_srednia);
	//}}AFX_DATA_MAP
}

W Visualu sa to moje pierwsze kroki, więc możliwe, że robie jakieś trywialne błędy

0

sprobuj usunac katalog debug, release, pliki *.clw, *.ncb, *opt i sprawdz. Czasem pomaga, najbardziej skasowanie katalogu debug

0

[pomysły macie zaje.. :D]

Pierwsza linijka: Debug Assertion Failed
słyszeliście o assert()??

dlgdata.cpp:

   if (hWndCtrl == NULL)
   {
      TRACE1("Error: no data exchange control with ID 0x%04X.\n", nIDC);
43:      ASSERT(FALSE);
      AfxThrowNotSupportedException();
   }

Masz błąd w programie... Swoim! Jak widzisz w tym kodzie powyżej nawet masz napisane jaki :]
Error: no data exchange control with ID <tu jakies ID>.

Używaj Start debug (F5), czytaj to co pokazuje się w się w zakładce debug, jeżeli wyskoczy błąd to naciśnij 'Ponów próbę' i znajdziesz się w debugerze...

Z tego kodu co podałeś to można przypuszczać, że masz obiekt nie podłączony do kontrolki. Ew. nie utworzoną kontrolkę, skopiowałeś i dodałeś do projektu resource, katalog res, plik(i) .rc?! Do tego .dsp i .dsw jeszcze dorzuć...

0

Też to często mam.

Ogólnie to ten błąd zaczyna wywalać jak do troche rozwieniętego programu opartemu na dialog boksie próbuje dodać nową kontrolkę i zmienną do niej.

Tak jak by VC generował kod z błędami :-/

0
walec-51 napisał(a)

Też to często mam.

Ogólnie to ten błąd zaczyna wywalać jak do troche rozwieniętego programu opartemu na dialog boksie próbuje dodać nową kontrolkę i zmienną do niej.

Tak jak by VC generował kod z błędami :-/

Masz brak wiedzy przede wszystkim... "Ten błąd" jak to określiłeś ma informaować cię, że robisz coś źle w swoim programie. On się sam nie "zaczyna wywalać", przyczyna tkwi w źle napisanym kodzie.
A te asercje są w bibliotece MFC, żeby można wychwytywać np.nieprawidłowe wywołania metod (powiedzmy z hWnd=NULL, itp.).
Błędy są w kodzie użytkownika biblioteki MFC [oczywiście nie zakładam, że w samej MFC nie ma błędu - tylko nie róbmy scen, 99% tego co początkujący uważają za błąd biblioteki/Windows to ich własne błędy...]

1 użytkowników online, w tym zalogowanych: 0, gości: 1