• 19 odgovora
  • 3.809 pregleda
mp3 player u Delphi(j)u,pomoc za maturski 03.12.2008. u 19:38 · pre 217 meseci #1
pozdrav,imam za maturski rad iz programiranja zadatak da napravim audio player.I ja sam poceo da pravim i vidio sam da je tesko,pa sam skinuo nekoliko primjera sa neta.Ali ni to mi nije moglo pomoci jer sam se izgubio u kodu a i nije mi jasan(za maturski moram da znam objasniti koji dio koda sta radi).Ovdje sam pokusavao naci rjesenje za svoj problem ali nisam uspio,pa sam odlucio da otvorim novu temu.
Prvi problem na koji sam naisao je "kako da u listbox1,selektovane fajlove iz opendialoga1,napisem u obliku redni broj pa onda naziv datoteke ne lokacija".Pokusao sam sad da uradim prvi dio ali kod mi prvo doda fajlove bez rednog broja,pa kad zavrsi sa svim selektovanim,onda dodaje sa brojem.evo kod
Code:

procedure TForm1.Button1Click(Sender: TObject);
var pom:string;
begin
if opendialog1.Execute then
listbox1.items.AddStrings(opendialog1.files);
 for i := 1 to Listbox1.Count  do
    begin
        pom:=listbox1.items.strings[i-1];
        listbox1.Items.Add(inttostr(i)+'.'+pom);
    end;
end;

Unaprijed Hvala!
Re: mp3 player u Delphi(j)u,pomoc za maturski 03.12.2008. u 20:15 · pre 217 meseci #3
Citat:
sasaz2008: Pažljivo pogledaj kod još jednom i videćeš gde si pogrešio.

znam da je greska ovdje
Code:
listbox1.items.AddStrings(opendialog1.files);

ali nemam drugi nacin da znam kolko ce biti pjesama u listboxu.(tj od 1 pa do kojeg broja)
Re: mp3 player u Delphi(j)u,pomoc za maturski 03.12.2008. u 20:40 · pre 217 meseci #4
Naravno da ima načina da se proveri. Ne zaboravi da se TStrings klasa svuda koristi na isti način. Najbolje je da pogledaš kod još jednom, ali sutra ujutro, kada budeš odmoran, videćeš sigurno u čemu grešiš.
Re: mp3 player u Delphi(j)u,pomoc za maturski 03.12.2008. u 22:19 · pre 217 meseci #5
Moj tii je savet da pogledas na netu...ima gomila primera...kako se pravi StringList_a pa da ListBox_u dodas Podatke na taj fazon...
Potpis
Don't worry be happy
Re: mp3 player u Delphi(j)u,pomoc za maturski 04.12.2008. u 00:08 · pre 217 meseci #6
Code:

procedure TForm1.btnOpenClick(Sender: TObject);
var plist:TStringList;       //deklarisanje pliste
begin
plist:=TStringList.Create;    //napravi plistu
if opendialog1.Execute then  //pozovi open
plist.addstrings(opendialog1.files); //stavi selektovano u plist
 for i := 1 to plist.count  do
   flist.listbox1.Items.Assign(plist); //upisi u listbox
 flist.Show;    //prikazi playlistu
end;

evo uspio sam da uradim sa TStringList,kako sad da dodam broj ispred lokacije tj.u play listu?
flist.listbox1.Items.Assign(inttostr(i)+'.'+plist); javlja mi gresku
Re: mp3 player u Delphi(j)u,pomoc za maturski 04.12.2008. u 09:31 · pre 217 meseci #7
Code:

procedure TForm1.btnOpenClick(Sender: TObject);
var 
  i: Integer;
begin
  if OpenDialog1.Execute then 
  begin
    for i := 0 to OpenDialog1.Files - 1  do
      FList.Listbox1.Items.Add(IntToStr(i) + '. ' + OpenDialog1.Files[i]);
   
    FList.Show; 
  end;
end;
Potpis
Do not be a help vampire (http://slash7.com/pages/vampires), use the google.

How to ask questions the smart way:
http://www.catb.org/~esr/faqs/smart-questions.html
http://solair.eunet.rs/~fangor...stions/smart-questions.sr.html
Re: mp3 player u Delphi(j)u,pomoc za maturski 04.12.2008. u 09:35 · pre 217 meseci #8
Pa kako sam te ja skapirao ti bi trebao kada uneses fajl da ispred njega stoji broj...tako i uradi...za svaki fajl unesi broj ispred
Code:

var i:Integer;
....
....
i := 0;
if opendialog1.Execute then 
begin
  Inc(I);
  plist.addstrings(IntToStr(i) '  ' opendialog1.files);
end;

Probaj ovako nesto dal radi?
Potpis
Don't worry be happy
Re: mp3 player u Delphi(j)u,pomoc za maturski 04.12.2008. u 09:41 · pre 217 meseci #9
Citat:
savkic: 
Code:

procedure TForm1.btnOpenClick(Sender: TObject);
var 
  i: Integer;
begin
  if OpenDialog1.Execute then 
  begin
    for i := 0 to OpenDialog1.Files - 1  do
      FList.Listbox1.Items.Add(IntToStr(i) + '. ' + OpenDialog1.Files[i]);
   
    FList.Show; 
  end;
end;

evo sacu da probam ovaj kod,ali sumnjam da ce raditi,jer je "OpenDialog1.Files" ustvari string.al et nista dok ne probam.
EVo probao sam i imao sam pravo.Cak i kada zamjenim "OpenDialog1.Files" sa "OpenDialog1.ComponentCount" nece da odradi posao kako treba.Nece u listbox nista da upise.
Re: mp3 player u Delphi(j)u,pomoc za maturski 04.12.2008. u 09:56 · pre 217 meseci #10
Citat:
mr.zhile:
Code:

var i:Integer;
....
....
i := 0;
if opendialog1.Execute then 
begin
  Inc(I);
  plist.addstrings(IntToStr(i) '  ' opendialog1.files);
end;

Probaj ovako nesto dal radi?

nazalost nece ni ovo
Re: mp3 player u Delphi(j)u,pomoc za maturski 04.12.2008. u 10:06 · pre 217 meseci #11
> evo sacu da probam ovaj kod,ali sumnjam da ce raditi,jer je "OpenDialog1.Files" ustvari string.al et nista dok ne probam.
> EVo probao sam i imao sam pravo.Cak i kada zamjenim "OpenDialog1.Files" sa "OpenDialog1.ComponentCount" nece da odradi posao

Eto šta se dešava kada pišeš online kod ;) Treba OpenDialog1.Files.Count - 1...
Potpis
Do not be a help vampire (http://slash7.com/pages/vampires), use the google.

How to ask questions the smart way:
http://www.catb.org/~esr/faqs/smart-questions.html
http://solair.eunet.rs/~fangor...stions/smart-questions.sr.html
Re: mp3 player u Delphi(j)u,pomoc za maturski 04.12.2008. u 10:24 · pre 217 meseci #12
Evo ovaj problem je rijesen,ali sada se pojavio drugi.Nece da mi pusta pjesmu jer se redni broj smatra kao put ka oderedistu.pokusao sam sa "flist.listbox1.Items.GetNamePath"opcijom ali nece.
Code:

mediaplayer1.close; 
   mediaplayer1.filename:=flist.listbox1.Items.strings[flist.listbox1.itemindex]; 
   mediaplayer1.Open;
   mediaplayer1.play; 

kakva bi ideja bila da u jedan listbox pamti lokacije(pomocni) a da ovaj drugi koristim kao playlistu(glavni)
Re: mp3 player u Delphi(j)u,pomoc za maturski 04.12.2008. u 10:38 · pre 217 meseci #13
Potrebno je da izdvojis putanju od broja, dodeli čitav string (redni broj + putanja) pomoćnom stringu i radi nad njim. Kako se putanja zavrsava sa "." ili ". ", imaš način da odrediš koji deo stringa je višak. Za taj prvi deo možeš koristiti Pos, a za brisanje ili izdvajanje stringa Delete ili Copy, pogledaj u helpu opise tih funkcija a takođe su dati i primeri.
Potpis
Do not be a help vampire (http://slash7.com/pages/vampires), use the google.

How to ask questions the smart way:
http://www.catb.org/~esr/faqs/smart-questions.html
http://solair.eunet.rs/~fangor...stions/smart-questions.sr.html
Re: mp3 player u Delphi(j)u,pomoc za maturski 04.12.2008. u 10:54 · pre 217 meseci #15
rijesio sam problem na laksi nacin.
mediaplayer1.filename:=(opendialog1.Files[flist.listbox1.itemindex]);
nikakvo izdvajanje stringova :D.
Code:

  if OpenDialog1.Execute then      //otvaranje open dialoga
  begin
    for i := 0 to OpenDialog1.Files.count - 1  do
      FList.Listbox1.Items.Add(IntToStr(i+1) + '.' + extractfilename(OpenDialog1.Files[i]));  //ubacivanje red.broja i pjesama
    FList.Show;  //prikazivanje playliste
  end;

rijesio sam i drugi dio teme tj.da u listboxu ne pise lokacija nego samo naziv pjesme!
Moze li mi tko reci kako da kontrolisem radi Volume Bara(mala ikonica u desnom cosku) i kako da uradim Time Base(pjesme).Za pocetak samo pomoc ne cijeli kod,jer zelim da uradim sam.
Hvala
Re: mp3 player u Delphi(j)u,pomoc za maturski 04.12.2008. u 17:34 · pre 217 meseci #16
> rijesio sam i drugi dio teme tj.da u listboxu ne pise lokacija nego samo naziv pjesme!

Bravo! Samo još proveri šta će se desiti ako ponovo klikneš na taster load i odabereš još fajlova... Na kraju, to zavisi kako si osmislio ponašanje aplikacije na takvu akciju.

> Moze li mi tko reci kako da kontrolisem radi Volume Bara(mala ikonica u desnom cosku)

Potrebno je koristiti API pozive, ali to baš i nije jednostavan zadatak... Za to ti mogu dati kod ili ga možeš naći na internetu.

> i kako da uradim Time Base(pjesme).Za pocetak samo pomoc ne cijeli kod,jer zelim da uradim sam.

ScrollBar? Da prikažeš trajanje pesme u obliku min:sec? Ili oba?
Re: mp3 player u Delphi(j)u,pomoc za maturski 04.12.2008. u 17:51 · pre 217 meseci #17
@sasaz2008
>>>hahahha,ti kad ne bi nasao gresku u kodu,to bi bilo cudo:D.Salim se.Hvala ti,bolje sto si ti nasao nego profesor :D!
Kada dodajem nove pjesme stalno pocninje da broji od 1,ali pokusat cu to sam rijesiti!

>>>sto se tice volum bara,radije bi da mi ti posaljes,jer sa programa koje skinem sa neta moram da isjecam kod,pa mi se desava da nekada ne radi pravilno

>>>RAdije bih i scroolbar i da odbrojava vrijeme!
Re: mp3 player u Delphi(j)u,pomoc za maturski 04.12.2008. u 18:56 · pre 217 meseci #18
Bolje je da ne koristiš nešto što ne razumeš i ne možeš da objasniš na ispitu, ali evo koda:

Code:

type 
  Tvolume = record
    left, right :word;
  end;

var
  fmixerhandle:hmixer;
  
procedure Fillstruct(control:Pmixercontrol;var Cdetails:Tmixercontroldetails);
begin
  cdetails.cbStruct:=sizeof(cdetails);
  cdetails.dwControlID:=control.dwControlID ;
  cdetails.cbDetails:=sizeof(integer);
  cdetails.hwndOwner :=0;
end;

function setvolume(control:Pmixercontrol; volume:Tvolume):boolean;
var
  details:array [0..30] of Integer;
  cdetails:TMIXERCONTROLDETAILS;
begin
  fillstruct(control,cdetails);
  cdetails.cChannels :=2;
  cdetails.paDetails:=@details;
  details[0]:=volume.left;
  details[1]:=volume.right;
  result:=MIXERSETCONTROLDETAILS(fmixerhandle,
    @cdetails,MIXER_GETCONTROLDETAILSF_VALUE)=0;
end;

function getvolume(control:Pmixercontrol;var volume:Tvolume):boolean;
var
  details:array [0..30] of Integer;
  cdetails:TMIXERCONTROLDETAILS;
begin
  fillstruct(control,cdetails);
  cdetails.cChannels :=2;
  cdetails.paDetails:=@details;
  result:=MIXERGETCONTROLDETAILS(fmixerhandle,
    @cdetails,MIXER_GETCONTROLDETAILSF_VALUE)=0;
  volume.left:=details[0];
  volume.right:=details[1];
end;


Možda nešto i nedostaje, ali suština je u tome.

Kako se zove komponenta koja se koristi za periodično obavljanje nekog posla, na svaku sekundu, na primer?

Kako se zove property u TMediaPlayer komponenti koja pokazuje koliko je sekindi proteklo od početka audio streama?
Re: mp3 player u Delphi(j)u,pomoc za maturski 05.12.2008. u 08:59 · pre 217 meseci #19
Citat:
sasaz2008: 
----Kako se zove komponenta koja se koristi za periodično obavljanje nekog posla, na svaku sekundu, na primer?
vjerovatno mislis na timer!
----Kako se zove property u TMediaPlayer komponenti koja pokazuje koliko je sekindi proteklo od početka audio streama?
ne znam kako se zove,ali bi se mogla napraviti mediaplayer1.tracklenght-vrijeme koje je proteklo od pocetka pjesme koje definisemo
promjenom pjesme.
Re: mp3 player u Delphi(j)u,pomoc za maturski 05.12.2008. u 09:23 · pre 217 meseci #20
Da bi nešto napravio, pored osnovne tehnike programiranja i samog jezika, moraš dobro da vladaš postojećim komponentama i klasama, da poznaješ njihovu svrhu i bar njihove osnovne metode i svojstva (properties). Najbolje je da dalje nastaviš sam, jer ćeš tako najbolje primeniti i pokazati svoje znanje, odnosno imati motivaciju da nastali problem rešiš sam.
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme