CComboBox::DIR
-
Hallo,
VC++ 6.0 MFCmit:
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
-
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
-
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_VIRTUALEs ist ein Formular als Dialog - In der Funktion
virtual void OnInitialUpdate()der abgeleiteten Klasse CFm1View
class CFm1View : public CFormViewHier 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