CComboBox::DIR



  • Hallo,
    VC++ 6.0 MFC

    mit:

    m_CmbDir.ResetContent();
    m_CmbDir.Dir(DDL_READONLY,_T("."));
    m_CmbDir.SetCurSel(1);

    funktioniert es.

    m_CmbDir.Dir(DDL_READONLY,_T("*.edi"));
    ->> so nicht- Dann gibt es ein Assert.
    .

    Was muss ich noch beachten? Ich möchte in der Box nur *.edi Dateien anzeigen/auflisten.

    Vielen Dank

    Fanker


  • Mod

    Wo bekommst Du den ASSERT? Nur durch das Ändern der Maske kann ich mir das nicht vorstellen.



  • Ich habe lediglich den Eintrag von . auf *.edi geändert.
    Dann wird beim Kompilieren ein Assert angezeigt.

    Zuvor habe ich noch Dateien mit der Endung .edi in das Verzeichnis kopiert.
    Bei . werden diese auch angezeigt.

    Vielen Dank für die Bemühungen.

    Gruß
    Fanker



  • Ein ASSERT wird zur Laufzeit eines Programms ausgelöst, wenn eine vom Entwickler gesetzte Bedingung nicht eintritt. Während der Kompilierung wird höchstens eine Warnung oder ein Fehler angezeigt. Du würdest uns einen großen Gefallen tun, wenn Du uns die Fehlermeldung oder den ASSERT auch mitteilen würdest. Zum Herumraten fehlt uns nämlich die Zeit. 😉



  • Vielen Dank für den Hinweis.

    Tut mir Leid dass ich mich so unpräzise ausgedrückt habe - ich werde zukünftig besser aufpassen.

    Der Hinweis brachte mich allerdings erst darauf noch einmal zu prüfen wann genau der Fehler angezeigt wird.

    Es ist die Zeile :
    m_CmbDir.GetLBText(m_CmbDir.GetCurSel(),m_DateiName);

    der Verursacher.

    Ich komme beim 'Wiederholen' (im Debug-Modus) in die Zeile:

    void CComboBox::GetLBText(int nIndex, CString& rString) const
    {
    ASSERT(::IsWindow(m_hWnd));
    GetLBText(nIndex, rString.GetBufferSetLength(GetLBTextLen(nIndex)));
    rString.ReleaseBuffer();
    }

    mit gelben Pfeil auf GetLBText ??

    Vermutlich findet er die Datei nicht- Sie steht aber in dem aktuellen (Debug)-Verzeichnis.

    Wie kann ich diesen Fehler abfangen? Was mache ich falsch?

    Vielen Dank die Bemühungen.

    Gruß
    Fanker



  • Wann wird

    m_CmbDir.GetLBText(m_CmbDir.GetCurSel(),m_DateiName);
    

    aufgerufen? Vermutlich erst, wenn der Dialog schon geschlossen ist.



  • Dies ist die Reihenfolge im Prog:

    CFormView::OnInitialUpdate();
    
    	// Combobox-Dir einlesen.
    	m_CmbDir.ResetContent();
    	m_CmbDir.Dir(DDL_READONLY,_T("*.edi"));
    	m_CmbDir.SetCurSel(1);
    
    	m_CmbDir.GetLBText(m_CmbDir.GetCurSel(),m_DateiName);
    

    Wenn er die Datei nicht findet? kann ich das dann irgendwie abfangen?

    Das kann ja später mal sein, dass keine Datei im Verzeichnis ist.

    Vielen Dank

    Gruß
    Fanker


  • Mod

    Fanker schrieb:

    Dies ist die Reihenfolge im Prog:

    Wo im Programm?



  • Eigentlich direkt am Anfang in der Initialisierung:

    public:
    
    // Overrides
    	// ClassWizard generated virtual function overrides
    	//{{AFX_VIRTUAL(CFm1View)
    	public:
    	virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
    	protected:
    	virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support
    	virtual void OnInitialUpdate(); // called first time after construct
    	virtual BOOL OnPreparePrinting(CPrintInfo* pInfo);
    	virtual void OnBeginPrinting(CDC* pDC, CPrintInfo* pInfo);
    	virtual void OnEndPrinting(CDC* pDC, CPrintInfo* pInfo);
    	virtual void OnPrint(CDC* pDC, CPrintInfo* pInfo);
    	//}}AFX_VIRTUAL
    

    Es ist ein Formular als Dialog - In der Funktion

    virtual void OnInitialUpdate()
    

    der abgeleiteten Klasse CFm1View

    class CFm1View : public CFormView
    

    Hier sollen im Formular die Summen der einzelnen EDI-Dateien geprüft und angezeigt werden. ( das will ich zumindest erreichen.)

    Vielen Dank

    Fanker



  • Und wo wird m_CmbDir erstellt?

    Du solltest auf jeden Fall prüfen, ob "m_CmbDir.GetCurSel()" auch einen gültigen Index zurückgibt.



  • Hi,

    vielen Dank für den Tipp, das war der Fehler.

    Ich prüfe jetzt erst m_CmbDir.GetCount().

    Danke an Euch

    Gruß
    Fanker


Anmelden zum Antworten