Suchfunktion basteln



  • Hallo zusammen,

    für ein Schulprojekt muss ich eine Art Mp3 Archiv mit dem Borland C++ Builder Programmieren, das Wissen dafür versuche ich mir mit dem Buch "C++ mit dem Borland C++ Builder" von Richard Kaiser anzueignen, was sich allerdings als nicht gerade besonderst einfach herausstellt.
    Folgendes will ich im genauen machen:
    Auf einen Klick sollen alle .mp3 Dateien (auf einer HDD, oder Verzeichnis+Unterverzeichnisse am besten) in einem Feld ausgegeben werden(Memo, RichEdit?), die Liste sollte am besten auch bei einem erneuten Start des Programms noch zu Verfügung stehen. Aus dieser sollte man dann entweder direkt Stücke in eine Playlist ziehen oder noch nach Suchbegriffen durchwühlen können, Playlisten abspeichern wäre natürlich auch nicht übel 🙂
    Mp3s abspielen mit der MediaPlayer Komponente sollte ja nicht das Problem sein, oder?

    So, am meisten häng ich an der Sache mit dem mp3 raus- und durchsuchen.
    Wäre nett wenn mir jemand da ein wenig auf die Sprünge helfen könnte, vielleicht sogar ein kleiner Code Schnipsel 🙄
    Bitte recht einfach gehalten :), das Buch geht zwar schön auf die IDE ein aber wenig auf die Sprache an sich.

    Danke schon mal im Vorab,

    Frank



  • also

    • zum Auswählen, entweder OpenDialog() für direkte Dateien oder SelectDirectory() um komplette verzeichnisse auszuwählen.
    • zum Listen, würde ich erstmal eine TStringList verwenden (Ausgabe in Memo oder StringGrid je nach Infos die du noch angeben willst)
    • Zum Speichern einfach eine Ini-Datei anlegen oder die Liste als .txt oder was auch immer Speichern ( TMemIniFile(),TIniFile() )

    Informier dich doch noch ein wenig in der Hilfe BCB, hier unter Suchen und FAQ und bei konkreten Problemen kommste wieder :-))

    Viel Glück
    mfg
    Steffen


  • Mod

    Hallo

    schau mal in die FAQ
    (ich glaube da gibt es ein Beispiel, wo Dateien auf der Platte gesucht werden
    FindFirst....)

    MfG
    Klaus



  • Erstmal vielen Dank für eure Antworten 😉

    Leider habe ich erst gestern Zeit gefunden mich intensiv damit zu beschäftigen, ich hab mal ein bisschen die Suchfunktion gequält mit den Stichwörtern die ihr mir gegeben habt und hab auch ein wenig im Netz gestöbert.
    Was ich mit dem Output von von SelectDirectory() Anfangen soll hab ich nicht ganz verstanden, hab mir das Beispiel im BCB angeschaut aber konnte dem irgendwie nicht ganz folgen.
    Ich hab aber auf www.cbuilder.de ein nettes kleines Beispiel Programm gefunden was so ziemlich genau macht was ich will. Einfach auf einen Button drücken und der Komplette Inhalt eines Verzeichnisse wird ausgegeben, es müsste jetzt nur noch einen Filter(für .mp3 Dateien) und vielleicht eine DriveComboBox, oder noch besser ein TreeView aller Festplatten und Verzeichnisse die man mit Häkchen versehen kann 🕶, um zu bestimmen was durchsucht werden soll.
    Um auch schon ein wenig in die (hoffentlich sehr nahe) Zukunft zu blicken:
    Ich möchte ja die .Mp3 Dateien an eine MediaPlayer Komponente weitergeben, bzw. vorher in eine Playlist Semmeln, ist das ohne weiteres möglich mit den hier diskutierten Mitteln?

    Ps: wer jetzt keine Lust hat sich dieses Beispiel Programm anzuschauen, und mir trotzdem Helfen möchte :), es nutzt die Win32-API-Funktionen FindFirstFile und FindNextFile.



  • Wie kommst du auf SelectDirectory? Gemeint waren die FAQ-Beispiele unter 'Dateien+Verzeichnisse'.



  • skho hat SelectDriectory fallen lassen, deswegen war ich ja auch etwas verwirrt, hab da nicht ganz den Bezug zu meinem Problem gefunden.

    Edit: Die FAQ Beiträge hab ich schon gelesen.

    [ Dieser Beitrag wurde am 19.01.2003 um 12:32 Uhr von Frank_H. editiert. ]



  • So weit so gut, habe jetzt mit einem Freund, der mir ein wenig auf die Sprünge geholfen hat, folgende FindFirst/FindNext Suchfunktion erstellt:

    void SucheMP3s( const AnsiString Path )
    {
    
            TSearchRec SRec;
            if( 0 == FindFirst( Path +  "\\*.mp3", faAnyFile, SRec ) )
            {
                    do
                    {
                            Form1->Memo1->Lines->Add(SRec.Name );
                    }
                    while( 0 == FindNext( SRec ) );
                    FindClose( SRec );
            }
    
            if( 0 == FindFirst( Path +  "\\*", faDirectory, SRec ) )
            {
                    do
                    {
                            if( (SRec.Name != ".") && (SRec.Name != "..") ) SucheMP3s( Path + "\\" + SRec.Name );
                    }
                    while( 0 == FindNext( SRec ) );
                    FindClose( SRec );
            }
    
    }
    //---------------------------------------------------------------------------
    
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
    SucheMP3s( AnsiString( &(DriveComboBox1->Drive), 1 ) + ":" );
    
    }
    //---------------------------------------------------------------------------
    

    Jetzt müsste ich nur noch Wissen wie ich mit diesen Ausgabe irgendwas anfangen kann, wie reiche ich jetzt die einzelnen Lines auf meine Playlist weiter(auch RichEdit) und wie bekomme ich den Pfad von dort in meine MediaPlayer Komponente?
    Danke schon mal im Voraus für jede Antwort 😉


Anmelden zum Antworten