dateien nach dateiendung filtern



  • also ich bin immernoch bei meiner listbox. allerdings will das nicht so ganz hinhauen. habe eine listbox erstellt. und auch über den klassenassistent einmal wert und control zugeweisen.

    aber irgendwie klappt das nicht so ganz. habe den code einfach unten angefügt. könnt ihr mal gucken was damit los ist ?

    CListBox m_ctl_fpga;
    
    m_ctl_fpga.SubclassDlgItem(IDC_fpga,this);
    
    m_ctl_fpga.Dir(0x0000,_T((LPCTSTR)"C:\\Dokumente und Einstellungen\\denrei\\Desktop\\bin-dateien\\*.rbt"));
    

    habe es in initial dialog drin

    Fehlermeldung ist:

    Es kommt immer das fenter mit "DEbug libary" also das gar nichts mehr geht. mit dem wiedreholen und ignorieren button.

    kann ich das mit dem code nicht einfach so machen ?



  • Der Code da oben ist vom Assistenten? 😮
    Irgendwie glaube ich dir das nicht... 🙄

    Steht diese Zeile auch in der OnInitDialog? Oder im Header?

    CListBox m_ctl_fpga;
    


  • nene der code ist der den in in initdlg eingefügt habe. also die 3 zeilen stehen da. aber irgendwie kommt immer diese fehlermeldung.

    ich weiss auch nicht wieso. sieht das denn auf den ersten blick erstmal richtig aus ?
    danke



  • Mach die ersten beiden Zeilen mal weg.
    Dann lege mit dem Assistenten eine Controlvariable an und versuchs nochmal. 🙂



  • oh man alles klar danke dir . habe grade nur die ersten beiden zeilen gelöscht und schon funtkioniert es. man ey so was und ich sitz da so lange dran.

    Danke dir !!



  • kurze und letzte frage hätte ich da noch.

    ich habe ja den pfad jetzt entgültig angegeben. der ist bei mir aber variable und wird in einen cstring gespeichert.

    wenn ich den pfad durch den string ersetze geht es irgendwie nicht und die listboc bleibt leer.
    woran kann das liegen ?

    danke



  • Zeig den Abschnitt mal.



  • m_ctl_fpga.Dir(0x0000,_T((LPCTSTR)"C:\\Dokumente und Einstellungen\\Heidenreich.KRAUSE_DE\\Desktop\\bin-dateien\\*.rbt"));
    

    ich habe es jetzt so versucht:

    m_ctl_fpga.Dir(0x0000,cFileDir);
    
    m_ctl_fpga.Dir(0x0000,_T((LPCTSTR)cFileDir));
    

    oder muss ich es anders mache ?

    danke !!



  • ok habe grad gesehen das ich die *.rbt am ende vergessen habe. aber er sollte doch trotzdem dann alles anzeigen was sich in dem ordner befindet oder?

    EDIT; hat sich erledigt. habe jetzt die dateiendung drangehangen. jetzt geht es wieder. besten dank !!!



  • Na ist doch schön. 🙂
    Fehler alleine finden ist doch viel besser als alles gezeigt kriegen, oder? 😉 👍



  • BTW:

    .Dir()
    

    kannst nicht benutzen um die Box rekursiv zu füllen. AfAIK musst
    du dir da was eigenes bauer.

    TinTin



  • wie meinste das jetzt ? also füllen geht doch . zumindest stehen da die dateinamen. ich bin jetzt nur dabei das ganze wieder auszulesen und das in einen string zu speichern. bin noch auf der suche nach dem passenden stück code.



  • Da du keine Rekursion nutzen willst, ist das was Tintin gesagt hat nicht so wichtig für dich.
    Rekursion == auch untergeordnete Ordner durchgucken

    Wegen dem Auslesen schau dir mal CListBox::GetText an. 🙂



  • sorry ich nochmal. komme irgendwie nicht weiter. habe das jetzt mit gettext versucht. wenn ich die daten aus dem listenfeld speichern will muss ich diese aber vorher makieren und kann immer nur das makierte speicher.

    geht es nicht auch das alles automatisch makiert ist ? also das ich einfach auf den speicher button klicke und automatisch alle im listenfeld befindlichen daten gespeichert werden ?



  • Du musst da nix markieren. 😕
    Ich hab jetzt nur in die MSDN geguckt, aber ich hab da ne Funktion, wo ich den Index angeben kann:

    MSDN schrieb:

    CListBox::GetText
    void GetText( int nIndex, CString& rString ) const;

    Parameters

    nIndex
    Specifies the zero-based index of the string to be retrieved.

    rString
    A reference to a CString object.

    Remarks
    Gets a string from a list box.

    Das ist ein gekürzter Auszug mit dem wichtigsten für dich. 🙂



  • ok sorry eigene doofheit- hatte da noch ein current selection vorne dran. 🙄
    danke dir !



  • ich nochmal 🙂

    also soweit funktioniert alles wunderbar 🙂 ich habe jetzt nur noch ein kleines problem.

    ich lese die daten aus dem ordner aus:

    c:dokumente_u_einstellungen\bla\bla\_BIN_

    das gebe ich vorher durch einen Openfiledialog an.
    der pfad wird in einem string gespeichert.

    ich möchte aber gleichezitig noch diesen pfad auslesen:

    c:dokumente_u_einstellungen\bla\bla\_DATA_

    also einfach einen ordner zurückspringen dann in den auch noch reingehen.

    habe gehört das man das so machen kann : ordner..\anderer ordner . also mit(..\)

    ich habe jetzt das problem das in dem gepseichertem string die pfadangabe so steht:

    c:dokumente_u_einstellungen\bla\bla\_BIN_\ -- ich müsste doch den letzten schrägstrich dafuer wegmachen oder ? oder geht sowas generell nicht in MFC ?

    wenn doch wie kann ich am gescheitesten das letzte zeichen entfernen.
    hab schon viel probiert aber da alles was den pfad angeht variabel bleiben muss hab ich es irgendwie noch nicht rausgefunden.

    _DATA_ und _BIN_ liegen aber im gleichen ordner.

    wäre dankbar fuer hilfe !!!



  • CString strPfad = "c:dokumente_u_einstellungen\bla\bla\_BIN_ ";
    strPfad.Replace("_BIN_", "_DATA_");
    

    So würde ich das mal versuchen. 😉

    Sorry, wenn ich nicht wirklich auf deine Idee eingehe, aber relative Pfade in einer totalen Pfadangabe sind mir suspekt.
    Ich glaube, du müsstest den letztes Backslash nicht wegmachen und könntest das andere einfach anhängen - versuchs doch mal. 😃



  • k das funzt! besten dank !

    also die ordner data und bin werden sich NIE ändern. denke das das dann geht oder?



  • Vodn7V schrieb:

    also die ordner data und bin werden sich NIE ändern. denke das das dann geht oder?

    Klar geht das.
    Falls du für den Fall doch vorbeugen willst, kannst du diese Werte ja in eine Ini-Datei oder die Registry schreiben. 🙂
    ...später... 😉

    PS: Für den Anfang kannst du ja #defines machen, dann lässt sich der Code leichter anpassen, falls du es doch ändern willst.


Anmelden zum Antworten