tutorials.de Buch-Aktion 05/2012
Seite 1 von 2 12 LetzteLetzte
ERLEDIGT
JA
ANTWORTEN
18
ZUGRIFFE
657
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    stefan-rw stefan-rw ist offline Mitglied
    Registriert seit
    Oct 2008
    Beiträge
    24
    Hallo, ich bin neuling in der c++ programmierung, und möchte in meinem Programm ein erweitertes Kombinationsfeld eisetzen. Die Tut's, zur Benutzung der Imagelisten waren schon schwer zu finden. Jetzt habe ich glaub ich das Problem gelöst, doch jedesmal waenn ich das Programm mit dem Visual Studio kompiliere kommt eine Assertion Fehlermeldung. Was ist das, und wie kann ich die Ausschalten?

    Danke für eure HIlfe
    Stefan

    CFileCoderApp *pApp;
    pApp=(CFileCoderApp *)AfxGetApp();
    m_imagelist =new CImageList;
    ASSERT(m_imagelist != NULL);
    m_imagelist->Create(32,32,TRUE,4,4);
    m_imagelist->Add(pApp->LoadIcon("test.jpg"));
    m_BildBox.SetImageList(m_imagelist);

    m_BildBox.AddString("Hallo");
     

  2. #2
    MCoder MCoder ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jul 2005
    Ort
    München
    Beiträge
    2.448
    Zitat Zitat von stefan-rw Beitrag anzeigen
    jedesmal waenn ich das Programm mit dem Visual Studio kompiliere kommt eine Assertion Fehlermeldung
    Meinst du wirklich beim Kompilieren oder vielleicht doch bei der Programmausführung?

    Du kannst mit LoadIcon kein .jpg laden, da gehen nur Icons( .ico). Vermutlich ist das die Absturzursache.

    Gruß
    MCoder
     
    "The three chief virtues of a programmer are: Laziness, Impatience and Hubris."
    --- Larry Wall

  3. #3
    Avatar von vfl_freak
    vfl_freak vfl_freak ist offline Mitglied Diamant
    Registriert seit
    Aug 2007
    Ort
    Niedersachsen
    Beiträge
    2.161
    Hallo,

    vermutlich ist Deine VAR nicht deklariert - versuch es mal so :
    Code :
    1
    
    CImageList *pImageList = [B]new[/B] CImageList;
    Aber ohne Gewähr ...

    tschüss
    Klaus

    EDIT: MCoder hat natürlich auch recht! Poste doch die komplette Fehlermeldung und schreib dabei wie und wann sie auftritt !!
    Geändert von vfl_freak (23.10.08 um 13:55 Uhr)
     
    Es ist noch kein Meister vom Himmel gefallen - sonst hätte man schon längst seine Leiche gefunden !!

    Falls ich helfen konnte, wäre eine Bewertung oder ein Danke nett ;-)
    -------------------------------------------------------------------------------------------------
    Ich beantworte keine Fragen per PN !!
    Stellt Eure Fragen im Forum - dann haben alle etwas davon !!

  4. #4
    stefan-rw stefan-rw ist offline Mitglied
    Registriert seit
    Oct 2008
    Beiträge
    24
    Danke mal für eure schnellen Antworten... j

    Habe jetzt folgendes versucht:
    - neues Projekt angelegt (Dialogfeld)
    - erweitertes Kombinationsfeld hinzugefügt
    - Membervariable (m_cmb) als Control vom Typ CComboBoxEx
    - Im OnInitDialog folgenden Eintrag definiert:
    m_cmb.AddString("test");

    danach über Strg+F5 das Programm kompiliert.

    vor Programmstart kam dann die AssertionFehler in der Exe im Modul ...

    Als Optionen konnte ich zwischne wiederholen (führt zum Debugger), Abbrechen (zurück zum Visual Studio) und Ignorieren wählen. Ignorieren führt zwar das Programm aus, aber der gewünschte Effekt, das Hinzufügen des Textes, fehlt.

    Ich hoffe ihr könnt mir weiterhelfen.

    Gruss
    Stefan
     

  5. #5
    Avatar von vfl_freak
    vfl_freak vfl_freak ist offline Mitglied Diamant
    Registriert seit
    Aug 2007
    Ort
    Niedersachsen
    Beiträge
    2.161
    Hmmm, das habe ich jetzt nicht wirklich verstanden .....

    Also die ASSERTs können in der Tat nur zur Laufzeit auslösen!
    Wieviel ASSERTS hast Du denn in Deinen Code stehen?

    Und was ist mit m_cmb?

    Poste mal den kompletten Code und einen ScrShot der Meldung, sonst wird das nix

    Gruß
    Klaus
     
    Es ist noch kein Meister vom Himmel gefallen - sonst hätte man schon längst seine Leiche gefunden !!

    Falls ich helfen konnte, wäre eine Bewertung oder ein Danke nett ;-)
    -------------------------------------------------------------------------------------------------
    Ich beantworte keine Fragen per PN !!
    Stellt Eure Fragen im Forum - dann haben alle etwas davon !!

  6. #6
    stefan-rw stefan-rw ist offline Mitglied
    Registriert seit
    Oct 2008
    Beiträge
    24
    BOOL CTest3Dlg::OnInitDialog()
    {
    CDialog::OnInitDialog();

    // Symbol für dieses Dialogfeld festlegen. Wird automatisch erledigt
    // wenn das Hauptfenster der Anwendung kein Dialogfeld ist
    SetIcon(m_hIcon, TRUE); // Großes Symbol verwenden
    SetIcon(m_hIcon, FALSE); // Kleines Symbol verwenden

    // ZU ERLEDIGEN: Hier zusätzliche Initialisierung einfügen

    m_cmb.AddString("test");


    return TRUE; // Geben Sie TRUE zurück, außer ein Steuerelement soll den Fokus erhalten
    }

    m_cmb ist der Name der Variablen für das ComboBoxEx element.

    Assertions habe ich nicht einen im Progammtext
     

  7. #7
    stefan-rw stefan-rw ist offline Mitglied
    Registriert seit
    Oct 2008
    Beiträge
    24
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    
    BOOL CTest3Dlg::OnInitDialog()
    {
        CDialog::OnInitDialog();
     
        // Symbol für dieses Dialogfeld festlegen. Wird automatisch erledigt
        //  wenn das Hauptfenster der Anwendung kein Dialogfeld ist
        SetIcon(m_hIcon, TRUE);         // Großes Symbol verwenden
        SetIcon(m_hIcon, FALSE);        // Kleines Symbol verwenden
        
        // ZU ERLEDIGEN: Hier zusätzliche Initialisierung einfügen
     
            m_cmb.AddString("test");
     
     
        return TRUE;  // Geben Sie TRUE zurück, außer ein Steuerelement soll den Fokus erhalten
    }
    Miniaturansicht angehängter Grafiken Miniaturansicht angehängter Grafiken ComboBoxEx und Assertion-iviewcapture_date_23_10_2008_time_14_47_10.jpg  
     

  8. #8
    Avatar von vfl_freak
    vfl_freak vfl_freak ist offline Mitglied Diamant
    Registriert seit
    Aug 2007
    Ort
    Niedersachsen
    Beiträge
    2.161
    Hmmm - das ist jetzt aber nicht der Quellcode, der zu dem aus Deinem ersten Post passt ... hier ist ja auch kein ASSERT drin, also kann hier wohl auch kein Assertion-Failure auftreten!

    Den findest Du auch NICHT im Quellcode, sondern es ist die anfangs von Dir erwähnte Fehlermeldungsbox! Davon brauchen wir den ScrShot! Und dann halt die die Stelle des Quellcodes, auf den in der Meldung verwiesen wird!

    Vielleicht nochmal zur allgemeinen Erklärung:
    das Makro ASSERT stelle eine "Zusicherung" dar! In Deinem Fall, das "m_imagelist != NULL" ist! Ist es dann zur Laufzeit doch NULL, dann wird die Programmausführung unterbrochen und die erwähnte Meldungsbox mit "Assertion-Failure" erscheint!

    Gruß
    Klaus
     
    Es ist noch kein Meister vom Himmel gefallen - sonst hätte man schon längst seine Leiche gefunden !!

    Falls ich helfen konnte, wäre eine Bewertung oder ein Danke nett ;-)
    -------------------------------------------------------------------------------------------------
    Ich beantworte keine Fragen per PN !!
    Stellt Eure Fragen im Forum - dann haben alle etwas davon !!

  9. #9
    stefan-rw stefan-rw ist offline Mitglied
    Registriert seit
    Oct 2008
    Beiträge
    24
    stimmt, ist nicht der quelltext aus dem ersten Post...

    aber ist merkwürdig, dass die Meldung von dem screenshot auftaucht, obwohl kein assertion drin ist. Der Quelltext und die Fehlermeldung aus dem Post gehören zusammen. Sobald ich versuche dem Steuerelement einen Wert zuzuweisen kommt die Fehlermeldung aus dem Screenshot. Auch ohne eine Imagelist. .. An der liegts also nicht.

    Die alleinige Anzeige des ComboBoxEx macht keine Probleme.
     

  10. #10
    Avatar von vfl_freak
    vfl_freak vfl_freak ist offline Mitglied Diamant
    Registriert seit
    Aug 2007
    Ort
    Niedersachsen
    Beiträge
    2.161
    Ah, jetzt sind wir schon einen Schritt weiter - die Assertion wird innerhalb der Bibliotheksfunktion "afxcmn2.inl" ausgelöst. Dies ist eine inline-Funktion der MFC-Library! Dui findest sie in Dienem VC-Installationsverzeichnis!

    Du kannst Dich an solche Stellen immer step für step mit dem Debugger rantasten, damit Du siehst, welche Stelle im Quellcode es denn genau ist - und dann dort analysieren, was schief läuft!

    Die genannte Stelle (Z. 277) ist folgendes
    Code :
    1
    2
    
    _AFXCMN_INLINE int CComboBoxEx::AddString(LPCTSTR lpszString)
        { UNUSED_ALWAYS(lpszString); ASSERT(FALSE); return CB_ERR;}

    Also macht hier Dein AddString Probleme! Kenne diese Funktion jetzt nicht wirklich, aber eventuell musst Du den Parameter anders übergeben - je nachdem, was erwartet wird!

    Und mir stellt sich noch immer die Frage, was genau denn nun "m_cmb" ist .....

    Gruß
    Klaus

    EDIT: sorry - erwartet wird natürlich ein LPCTSTR (also const char *), das steht das ja !!
    Geändert von vfl_freak (23.10.08 um 15:03 Uhr)
     
    Es ist noch kein Meister vom Himmel gefallen - sonst hätte man schon längst seine Leiche gefunden !!

    Falls ich helfen konnte, wäre eine Bewertung oder ein Danke nett ;-)
    -------------------------------------------------------------------------------------------------
    Ich beantworte keine Fragen per PN !!
    Stellt Eure Fragen im Forum - dann haben alle etwas davon !!

  11. #11
    stefan-rw stefan-rw ist offline Mitglied
    Registriert seit
    Oct 2008
    Beiträge
    24
    nun, um auf die Combo zugreifen zu können brauch ich eine Kontrollvariable vom typ CComboBoxEx ... und die hat hier den Namen m_cmb


    Danke mal für deine Hilfe ....

    Der Aufruf der Memberfunktion AddString lautet:

    int AddString (LPCTSTR lpszString)

    also doch eigentlich ne ganz normale Stringübergabe ?
     

  12. #12
    Avatar von vfl_freak
    vfl_freak vfl_freak ist offline Mitglied Diamant
    Registriert seit
    Aug 2007
    Ort
    Niedersachsen
    Beiträge
    2.161
    mir leider nicht 100%ig klar, was dieses UNUSED_ALWAYS genau macht, aber versuch mal, zuvor 'ne <const char *>-Variable zu deklarieren, ihr den Text zuweisen und diese dann zu übergeben .....

    tschüss
    Klaus
     
    Es ist noch kein Meister vom Himmel gefallen - sonst hätte man schon längst seine Leiche gefunden !!

    Falls ich helfen konnte, wäre eine Bewertung oder ein Danke nett ;-)
    -------------------------------------------------------------------------------------------------
    Ich beantworte keine Fragen per PN !!
    Stellt Eure Fragen im Forum - dann haben alle etwas davon !!

  13. #13
    stefan-rw stefan-rw ist offline Mitglied
    Registriert seit
    Oct 2008
    Beiträge
    24
    War n versuch wert, hat aber auch nix gebracht ...

    Trotzdem Danke
     

  14. #14
    Avatar von vfl_freak
    vfl_freak vfl_freak ist offline Mitglied Diamant
    Registriert seit
    Aug 2007
    Ort
    Niedersachsen
    Beiträge
    2.161
    BTW: Du sieht übrigens in Deinem Bild unten in der Konsole, dass das Programm schon fehlerfrei compiliert wurde! Es passiert also wirklich zur Laufzeit - in diesem Fall halt gleich zu Beginn

    gruß
    Klaus
    stefan-rw bedankt sich. 
    Es ist noch kein Meister vom Himmel gefallen - sonst hätte man schon längst seine Leiche gefunden !!

    Falls ich helfen konnte, wäre eine Bewertung oder ein Danke nett ;-)
    -------------------------------------------------------------------------------------------------
    Ich beantworte keine Fragen per PN !!
    Stellt Eure Fragen im Forum - dann haben alle etwas davon !!

  15. #15
    deepthroat deepthroat ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jun 2005
    Beiträge
    8.169
    Hi.

    Hast du denn irgendwo die Create() Methode für die CComboBoxEx aufgerufen?

    Gruß
     
    If at first you don't succeed, try again. Then quit. No use being a damn fool about it.

Ähnliche Themen

  1. Assertion Failed - Seltsam
    Von KHORN im Forum C/C++
    Antworten: 0
    Letzter Beitrag: 27.06.06, 18:02
  2. Debug Assertion
    Von thhh im Forum VisualStudio & MFC
    Antworten: 3
    Letzter Beitrag: 30.08.04, 14:53
  3. Debug Assertion failed...
    Von Davetum im Forum C/C++
    Antworten: 1
    Letzter Beitrag: 22.01.04, 20:09
  4. Deubg Assertion Failure....
    Von vollecker im Forum VisualStudio & MFC
    Antworten: 6
    Letzter Beitrag: 18.12.03, 17:07
  5. Debug Assertion failed...
    Von Davetum im Forum C/C++
    Antworten: 0
    Letzter Beitrag: 17.07.03, 12:39