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).
A od czego jest debugger? :)
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
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
sprobuj usunac katalog debug, release, pliki *.clw, *.ncb, *opt i sprawdz. Czasem pomaga, najbardziej skasowanie katalogu debug
[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ć...
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 :-/
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...]