Listbox und ExtractFilename



  • Hallo

    Gibt es eigentlich eine Möglichkeit, die von einem OpenDialog selectierten Files in eine Listbox so einzulesen, das der Pfad glecih verschwindet und nur die Datei dasteht??

    ListBox1->Items = ExtractFileName(OpenDialog1->Files);
    

    funzt leider nicht!!



  • Zum wiederholten Mal: "Funktioniert nicht" ist keine Fehlermeldung.

    Vielleicht ist es dir noch nicht aufgefallen, aber der BCB gibt tatsächlich Klartext-Fehlermeldungen aus, die man sich dann üblicherweise durchliest, um herauszufinden, was man falsch gemacht hat.

    Im konkreten Fall solltest du mal nachschlagen, welchen Variablentyp ExtractFileName als Parameter erwartet und von welchem Typ TOpenDialog::Files ist. Dann wirst du hoffentlich bemerken, dass du nicht umhinkommst, die einzelnen Dateinamen nacheinander, in einer Schleife zu bearbeiten.



  • Ich bekomme die Fehlermeldung, das eine Konvertierung von TStrings nach AnsiString nicht möglich ist. Mein Gedanke mit der Schleife wäre dieser.

    if (OpenDialog1->Execute());
      {
        for (int f=0; f < PlayList->Items->Count; f++)
        {
          Timer1->Enabled = false;
          PlayList->Items->Strings[f] = ExtractFileName(OpenDialog1->FileName);
          MediaPlayer1->FileName = PlayList->Items->Strings[0];
          MediaPlayer1->Open();
        }
      }
    

    PlayList ist hierbei eine Listbox. Allerdings ist meine Listbox komplett leer. Es werden keine Einträge reingeladen.
    Jemand eine Idee???



  • Linuxguru schrieb:

    Jemand eine Idee???

    Ja.

    Kommentiere jede Zeile deines Codes inde du aufschreibst, was du mit der Zeile beabsichtigst, und poste hier nochmal. Ich glaube kaum, dass dir hier jemand das Denken und debuggen abnehmen will...

    -junix



  • if (OpenDialog1->Execute());  //Dialogfeld wird geöffnet
      { 
        for (int f=0; f < PlayList->Items->Count; f++) 
        { 
          PlayList->Items->Strings[f] = ExtractFileName(OpenDialog1->Files); //Hier sollen die Pfade bei den Files weggenommen werden.
          MediaPlayer1->FileName = PlayList->Items->Strings[0]; //Erster Eintrag in der Listbox wird gewählt
          MediaPlayer1->Open(); Mediaplayer Kompo wird geöffnet
        } 
      }
    

    So... Ich hoffe mal das hilft weiter. PlayList = Listbox...



  • Stell dich doch nicht so ... äh ... "schwierig" an!

    OpenDialogs->Files ist eine Liste. Diese Liste musst du in einer Schleife durchlaufen und den jeweiligen Eintrag (nach Bearbeitung mit ExtractFileName) zu den Items der ListBox hinzufügen.

    Natürlich kannst du dann im MediaPlayer die Dateien nicht mehr aus der ListBox laden, da dort ja nur die Namen, nicht aber die Pfade gespeichert sind. Statt dessen benutzt du den jeweiligen Eintrag aus OpenDialog->Files.



  • Stell dich doch nicht so ... äh ... "schwierig" an!

    Jansen... Für dich klingt das eventuell selbstverständlich, aber es gibt auch Leute, die irgendwann mal mit der Programmierung anfangen oder sich nicht den ganzen tag damit befassen können, weil es die Zeit einfach nicht hergibt.

    Aber trotzdem Danke erstmal... Ich werd mal schauen, das ich es hinbekomme!!

    MfG



  • Schau dir erstmal die folgenden Dinge an:

    TStrings::Clear()
    TStrings::Add(...)
    TStrings::Count



  • Linuxguru schrieb:

    Stell dich doch nicht so ... äh ... "schwierig" an!

    Jansen... Für dich klingt das eventuell selbstverständlich, aber es gibt auch Leute, die irgendwann mal mit der Programmierung anfangen oder sich nicht den ganzen tag damit befassen können, weil es die Zeit einfach nicht hergibt.

    Du scheinst dich ja im Moment damit zu befassen? Also gibt es die Zeit doch her (was übrigens sowieso falsch ist, die Zeit gibt gar nix). Ausserdem sollte man die Grundbausteine der Sprache schon beherrschen und wissen, dass Zuweisungen immer von rechts nach Links passieren. Ebenso sollte man sich etwas mit der Dokumentation des Frameworks umgehen können....gerade als hobbiist, wo man sich nur sporadisch damit auseinandersetzt.

    -junix


Anmelden zum Antworten