Losowe otwieranie plików dźwiękowych

0

Witajcie. proszę o pomoc.
Kiedyś lata temu uczyłem się Delphi ale pozapominałem.

Pytanie:
Mam folder w którym mam x plików dźwiękowych typu wav lub mp3
(typ tu nie ma znaczenia mogę przekonwertować)

tylko że liczba tych plików będzie zmienna raz będzie 10 potem kilka do folderu dorzucę inne usunę.

Jednym słowem klikam przycisk i odtwarza mi losowy plik dźwiękowy z folderu, kolejny klik następny losowo plik.
Tutaj bym prosił o przykład by ruszyć z miejsca.

Dodatkowo chce za pomocą drugiego przycisku pokazać krótką informacje w polu Edit. inaczej mówiąc chce powiązać nazwy plików dźwiękowych z krótką informacją czyli:

tytuł_pliku.mp3 = edit1.text:='jakaś informacja'.
tytuł_pliku2.mp3 = edit1.text:='inna informacja'

To chyba musze zrobić w pliku tekstowym ? jak taka składnia pliku .txt powinna wyglądać?
O ile myślę w dobrym kierunku z tym pilikiem tekstowym.

Najważniejsze pierwsze to losowe odtwarzanie z folderu
Z góry dziękuję i pozdrawiam

1
function LoadFileNames(Directory: String): TStringList;
begin
  {tutaj użyj tego okropieństwa http://www.swissdelphicenter.ch/en/showcode.php?id=1725}
end;

FileNames = LoadFileNames(Dict);
YourPreciousFileName = FileNames[SomeFormOfRandomDistribution(0, FileNames.Length)];
1
Qudamah napisał(a)

tylko że liczba tych plików będzie zmienna raz będzie 10 potem kilka do folderu dorzucę inne usunę.

Czyli liczba plików w katalogu może się zmieniać? Jeśli tak to patrz post @spartanPAGE;

To chyba musze zrobić w pliku tekstowym ? jak taka składnia pliku .txt powinna wyglądać?
O ile myślę w dobrym kierunku z tym pilikiem tekstowym.

Możesz pójść w tę stronę - implementacja będzie prosta; Aby było łatwo - bo zakładam że ma być łatwo - użyj pliku INI; W tym pliku zapisz jedną sekcję, w której klucze będą posiadać nazwy takie jak pliki dźwiękowe, a ich wartości będą zawierać te Twoje informacje;

Przykład:

[SOUND FILES]
file=information
file=information
file=information

W miejsca file wstaw nazwy swoich plików, a w miejsca information wstaw te krótkie informacje;

Teraz wystarczy pobrać nazwy plików dźwiękowych do listy, wylosować liczbę, pobrać nazwę pliku z listy, a następnie użyć jej do odczytania informacji o tym pliku dźwiękowym z pliku konfiguracyjnego.

0

Dziękuję za pomoc:
Z plikami INI już sobie poradzę ale pytanko do pierwszego członu:
gdzie dodać kod po plusie który podałeś ?
Bo coś robię źle i głównie jak bym nie zrobił sypie mi się buton jego zdarzenie onclick. dodałem listboxa tak jak był w linku wiec tamten przykład mi chodzi.
Kombinuje usuwam tamtą procedurę zostawiam Twoją funkcje ale jakbym nie pozmieniał coś mi się sypie.

function LoadFileNames(Directory: String): TStringList;
begin
  {tutaj użyj tego okropieństwa http://www.swissdelphicenter.ch/en/showcode.php?id=1725}
end;
FileNames = LoadFileNames(Dict);
YourPreciousFileName = FileNames[SomeFormOfRandomDistribution(0, FileNames.Length)];
0

gdzie dodać kod po plusie który podałeś ?

To nie jest gotowiec, więc po przekopiowaniu go do edytora nagle nie zacznie wszystko działać; To tylko przykład rozwiązania, które w Twoim przypadku może stanowić wzór implementacji;

Jednym słowem klikam przycisk i odtwarza mi losowy plik dźwiękowy z folderu, kolejny klik następny losowo plik.

Jeśli podczas działania programu, zawartość katalogu może się zmieniać (liczba plików dźwiękowych i zawartość pliku konfiguracyjnego), to wspomniany kawałek kodu należy wykonać właśnie po kliknięciu w przycisk, czyli w zdarzeniu OnClick; W przeciwnym razie, jeżeli podczas działania programu zawartość katalogu jest niezmienna, listę plików i zawartość pliku konfiguracyjnego możesz wczytać do pamięci już w konstruktorze formularza; Natomiast po kliknięciu w przycisk ograniczyć działania do wylosowania liczby, pobrania nazwy pliku i odegrania dźwięku;

Bo coś robię źle i głównie jak bym nie zrobił sypie mi się buton jego zdarzenie onclick. dodałem listboxa tak jak był w linku wiec tamten przykład mi chodzi.

Nie opisuj kodu - po prostu wklej go do posta, a zobaczymy co z nim nie tak.

1
spartanPAGE napisał(a):
function LoadFileNames(Directory: String): TStringList;
begin
  {tutaj użyj tego okropieństwa http://www.swissdelphicenter.ch/en/showcode.php?id=1725}
end;

Nie przesadzaj
http://docwiki.embarcadero.com/VCL/2010/en/IOUtils.TDirectory

1 użytkowników online, w tym zalogowanych: 0, gości: 1