[ Tare_TDI @ 03.12.2008. 19:38 ] @
| 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! |
[ sasaz2008 @ 03.12.2008. 19:57 ] @
Pažljivo pogledaj kod još jednom i videćeš gde si pogrešio.
[ Tare_TDI @ 03.12.2008. 20:15 ] @
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)
[ sasaz2008 @ 03.12.2008. 20:40 ] @
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š.
[ mr.zhile @ 03.12.2008. 22:19 ] @
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...
[ Tare_TDI @ 04.12.2008. 00:08 ] @
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
[ savkic @ 04.12.2008. 09:31 ] @
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;
[ mr.zhile @ 04.12.2008. 09:35 ] @
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?
[ Tare_TDI @ 04.12.2008. 09:41 ] @
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.
[ Tare_TDI @ 04.12.2008. 09:56 ] @
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
[ savkic @ 04.12.2008. 10:06 ] @
> 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...
[ Tare_TDI @ 04.12.2008. 10:24 ] @
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)
[ savkic @ 04.12.2008. 10:38 ] @
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.
[ mr.zhile @ 04.12.2008. 10:53 ] @
[ Tare_TDI @ 04.12.2008. 10:54 ] @
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
[ sasaz2008 @ 04.12.2008. 17:34 ] @
> 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?
[ Tare_TDI @ 04.12.2008. 17:51 ] @
@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!
[ sasaz2008 @ 04.12.2008. 18:56 ] @
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?
[ Tare_TDI @ 05.12.2008. 08:59 ] @
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.
[ sasaz2008 @ 05.12.2008. 09:23 ] @
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.
Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.
|