Nadpisywanie w listboxie

milosz0010

Użytkownik
Dołączył
Maj 6, 2007
Posty
248
Wiec robie odtwaracz muzyki i mam w nim listbox'a(playliste). Zrobilem dodawanie nazwy pliku do playlisty z zabezpieczeniem nadpisujacym, lecz nie dziala.... Petla, ktora tworzy nazwe pliku ze sciezki zatrzymuje sie na jednym '/'... Jak zrbic ze kazda nazwa pliku miala gdzies zapisana swoja sciezke??
Podaje kod:
Kod:
procedure TForm1.SpeedButton3Click(Sender: TObject);

begin

  if OpenDialog1.Execute then

  begin

  a := OpenDialog1.FileName;

   for i:=1 to length(a) do

   begin

    delete(a,1,pos('',a));

    if pos(a, listbox1.Items.Text) > 1  then

         if Application.MessageBox('Plik znajduje się już w Playliscie! Zastąpic?','Blad!',MB_YESNO or MB_ICONQUESTION)= IDYES then



             listbox1.items.Delete(pos(a, listbox1.Items.Text))



    else

    Listbox1.Items.Add(IntToStr(Listbox1.Count + 1)+'. '+ a);











end;

end;

end;

@Dzieki, ale problem juz rozwiazany;p
 

mar_je

Użytkownik
Dołączył
Kwiecień 19, 2007
Posty
74
Spróbuj tak:
Kod:
procedure TForm1.SpeedButton3Click(Sender: TObject);

begin

  if OpenDialog1.Execute then

  begin

  a := OpenDialog1.FileName;

  for i:=0 to listbox1.items.count-1 do

   begin

    if pos(a, listbox1.Items[i])<>0  then //lub listbox1.items[i].text

         if Application.MessageBox('Plik znajduje się już w Playliscie! Zastąpic?','Blad!',MB_YESNO or MB_ICONQUESTION)= IDYES then



             listbox1.items[i].Delete //lub  listbox1.items.Delete(i)



    else

    Listbox1.Items.Add(IntToStr(Listbox1.Count + 1)+'.'+ a);

end;

end;

end;

PS. Czemu kasujesz ""?
Jeśli chcesz mieć same nazwy utworów to pod a := OpenDialog1.FileName; daj:
Kod:
a:=extractfilename(a);
 

T$cr!pt3r

Użytkownik
Dołączył
Lipiec 23, 2007
Posty
207
Kod:
function Zabezpiecz(Lista:TListBox;OpenDialog:TOpenDialog; var S:String):Integer;

var

 I:Integer;

begin

 Result:=0;

 S:='';

 OpenDialog.FileName:='';

 OpenDialog.Execute;

  if FileExists(OpenDialog.FileName) then begin

   S:=OpenDialog.FileName;

   For I:=0 to Lista.Count-1 do begin

    if (ExtractFileName(OpenDialog.FileName)=Lista.Items[i]) then Break

   end;

   if I<>Lista.Count-1 then Result:=I;

  end;

end;

Przykład:
Kod:
var

X:Integer;

S:String;

begin

X:=Zabezpiecz(ListBox1, OpenDialog1, S);

if X <> 0 then

 if MessageBox(Handle, 'Wybrany plik jest już na PlayLiscie! Czy chcesz napisac?', PChar(Application.Title), MB_YESNO) = idYes then

  ListBox1.Items[X]:=ExtractFileName(S);
(Nie testowałem!)
 

milosz0010

Użytkownik
Dołączył
Maj 6, 2007
Posty
248
Teraz mam kolejny problem, jak odczytac dlugosc mp3 nie odwarzajac jeszcze pisenki? Chodzi mi o to aby przy dodawaniu piosenki do playlisty dodac do rownorzednego listboxa czas. Jak narazie dorwalem taki kod:
Kod:
label2.Caption := FloatToStr((MediaPlayer1.Length div 1000) div 60)+ ':' + FloatToStr((MediaPlayer1.Length div 1000) mod 60);
Ale to nie o to chodzi....
 
Do góry Bottom