/ Forside / Teknologi / Udvikling / Delphi/Pascal / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Delphi/Pascal
#NavnPoint
oldwiking 603
jrossing 525
rpje 520
EXTERMINA.. 500
gandalf 460
gubi 270
DJ_Puden 250
PARKENSS 230
technet 210
10  jdjespers.. 200
Threads - create en thread
Fra : Esben Piltoft


Dato : 07-07-01 16:21

Ja, jeg ved ikke rigtig hvordan jeg skal stille spørgsmålet. Så det bliver
på denne måde:


Det jeg har er dette:
//**********************
type TLyd = class(TThread)
private
protected
procedure Execute; override;
end; { of class declaration }

procedure TLyd.Execute;
var
LydFil : String;
begin
LydFil := 'woohoo.wav';
PlaySound(Pchar(LydFil), 0, SND_FILENAME);
FreeOnTerminate := true;
end;
//**********************



Det jeg godt kunne tænke mig er noget i retning af dette:
//**********************
type TLyd = class(TThread)
private
protected
procedure Execute; override; //Skulle vel så ændres til
//nedenstående, men så vil det jo være en ukendt procedure for systemet

end; { of class declaration }

procedure TLyd.Execute(LydFil : String); //Kan jo desværre ikke lade sig
gøre
begin
PlaySound(Pchar(LydFil), 0, SND_FILENAME);
FreeOnTerminate := true;
end;
//**********************

Så jeg kan create Tlyd og samtidig fortælle den hvilken lydfil der skal
afspilles. Er der en måde man kan gøre det på (uden at have en global
variabel der tager hukommelse) ??

Har ikke selv kunne finde noget hvor der ikke er en global variabel.

Da det måske ikke kan lade sig gøre, kommer mit næste spørgsmål:

Kan man lave variabler i runtime (globale variabler) ??

På forhånd tak
--
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Esben Piltoft E-mail: piltoft@mail1.stofanet.dk








 
 
Niels (07-07-2001)
Kommentar
Fra : Niels


Dato : 07-07-01 18:17

Just as I expected, Esben Piltoft came up with this:

>type TLyd = class(TThread)
> private
> protected
> procedure Execute; override; //Skulle vel så ændres til
> //nedenstående, men så vil det jo være en ukendt procedure for systemet
>
> end; { of class declaration }
>
>procedure TLyd.Execute(LydFil : String);

Prøv sådan her:

type
TLyd = class(TThread)
private
FLydFil: string;
protected
procedure Execute; override;
public
property LydFil: string
read FLydFil
write FLydFil;
end;

procedure TLyd.Execute;
begin
if FileExists(LydFil) then
PlaySound(Pchar(LydFil), 0, SND_FILENAME);
FreeOnTerminate := True;
end;

Så sætter du bare din TLyd's LydFil property før du kalder starter
tråden, så skuylle den spille lige så lystigt :)

Niels
--
http://www.niller.f2s.com/ - niLLer's pages, that's my software
http://g4s.dnsq.org/ - when I'm online
g4s ad post dot ocm - new email! (note: it's .com !)
ICQ#: 50187323

Claus Christiansen (07-07-2001)
Kommentar
Fra : Claus Christiansen


Dato : 07-07-01 21:13

g4s@post-and-not-spam.com (Niels) wrote in
news:3b474353.18568131@news.inet.tele.dk:

> Just as I expected, Esben Piltoft came up with this:
>
>>type TLyd = class(TThread)
>> private
>> protected
>> procedure Execute; override; //Skulle vel så ændres til
>> //nedenstående, men så vil det jo være en ukendt procedure for
>> systemet
>>
>> end; { of class declaration }
>>
>>procedure TLyd.Execute(LydFil : String);
>
> Prøv sådan her:
>
> type
> TLyd = class(TThread)
<klip> en masse kode
>
> Så sætter du bare din TLyd's LydFil property før du kalder starter
> tråden, så skuylle den spille lige så lystigt :)
>
> Niels

Hvis det blot drejer sig om at spille en wave-fil async så er det nok
lidt nemmere at bruge API kaldet sndPlaySound, så www.pythia.dk under
tips|afspil wavefil eller noget i den stil.

Claus
--
Claus Christiansen, <mailto:cch@unipeople.dk>

personal: http://www.bigfoot.com/~kruc/; pythia: http://www.pythia.dk
============================================--------------------------
"Computers are useless. They can only give you answers."
- Pablo Picasso (1881-1973)

Esben Piltoft (08-07-2001)
Kommentar
Fra : Esben Piltoft


Dato : 08-07-01 08:30

> Hvis det blot drejer sig om at spille en wave-fil async så er det nok
> lidt nemmere at bruge API kaldet sndPlaySound, så www.pythia.dk under
> tips|afspil wavefil eller noget i den stil.

Jamen, det var det jo lige det jeg skulle bruge. Mange tak! :)
--
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Esben Piltoft E-mail: piltoft@mail1.stofanet.dk





Esben Piltoft (08-07-2001)
Kommentar
Fra : Esben Piltoft


Dato : 08-07-01 08:55

> type
> TLyd = class(TThread)
> private
> FLydFil: string;
> protected
> procedure Execute; override;
> public
> property LydFil: string
> read FLydFil
> write FLydFil;
> end;
>
> procedure TLyd.Execute;
> begin
> if FileExists(LydFil) then
> PlaySound(Pchar(LydFil), 0, SND_FILENAME);
> FreeOnTerminate := True;
> end;
>
> Så sætter du bare din TLyd's LydFil property før du kalder starter
> tråden, så skuylle den spille lige så lystigt :)


Med "Starter tråden" mener du så: TLyd.Create(false);?

Og hvordan sætter jeg LydFil's property: TLyd.LydFil := 'woohoo.wav';
(giver en "Method identifier expected" compiler-fejl). LydFil eksisterer vel
ikke uden for klassen TLyd?

Måske er det slet ikke så svært (for andre), men jeg har vist rodet mig ud i
noget snavs ;)
Så bare ignorer denne mail, hvis det ser for håbløst ud for mig. :)
--
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Esben Piltoft E-mail: piltoft@mail1.stofanet.dk



Niels (08-07-2001)
Kommentar
Fra : Niels


Dato : 08-07-01 11:54

Just as I expected, Esben Piltoft came up with this:

Selvom du har fået en løsning fortsætter jeg lige, sådan bare for at
gøre klart hvordan min løsning er *beregnet* til at fungere

>Med "Starter tråden" mener du så: TLyd.Create(false);?

Nu er min erfaring med tråde lig nil, men efter et kig i hjælpe-filen
kan jeg give dig den her kode:

with TLyd.Create(True) do
begin
LydFil := 'c:\minlyd.wav';
Resume;
end;

Den laver et nyt TLyd tråd-objekt som ikke starter med det samme, så
sætter den LydFil propertien på det nyt tråd-objekt og kalder til sidst
Resume for at starte tråden.

>Og hvordan sætter jeg LydFil's property: TLyd.LydFil := 'woohoo.wav';
>(giver en "Method identifier expected" compiler-fejl). LydFil eksisterer vel
>ikke uden for klassen TLyd?

LydFil er en property af klassen TLyd. For at du kan bruge den skal du
først instantiere klassen TLyd (hvorved du får et TLyd objekt), og så
kan du sætte LydFil propertien på det objekt du har.

Niels
--
http://www.niller.f2s.com/ - niLLer's pages, that's my software
http://g4s.dnsq.org/ - when I'm online
g4s ad post dot ocm - new email! (note: it's .com !)
ICQ#: 50187323

Esben Piltoft (09-07-2001)
Kommentar
Fra : Esben Piltoft


Dato : 09-07-01 06:28

> Nu er min erfaring med tråde lig nil, men efter et kig i hjælpe-filen
> kan jeg give dig den her kode:
>
> with TLyd.Create(True) do
> begin
> LydFil := 'c:\minlyd.wav';
> Resume;
> end;

Det er helt pinligt. Jeg havde læst det samme i hjælpefilen, men slet ikke
fattet det.

SÅ mange tak for hjælpen (jeg får lidt for tit hjælpefilen galt i halsen)
:)

--
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Esben Piltoft E-mail: piltoft@mail1.stofanet.dk





Claus Christiansen (08-07-2001)
Kommentar
Fra : Claus Christiansen


Dato : 08-07-01 13:02

"Esben Piltoft" <piltoft@mail1.stofanet.dk> wrote in
news:3b48126b$0$3240$ba624c82@nntp01.dk.telia.net:

>> type
>> TLyd = class(TThread)
>> private
>> FLydFil: string; protected
>> procedure Execute; override; public
>> property LydFil: string
>> read FLydFil
>> write FLydFil; end;
>>
>> procedure TLyd.Execute; begin
>> if FileExists(LydFil) then
>> PlaySound(Pchar(LydFil), 0, SND_FILENAME);
>> FreeOnTerminate := True; end;
>>
>> Så sætter du bare din TLyd's LydFil property før du kalder starter
>> tråden, så skuylle den spille lige så lystigt :)
>
>
> Med "Starter tråden" mener du så: TLyd.Create(false);?
>
> Og hvordan sætter jeg LydFil's property: TLyd.LydFil :=
> 'woohoo.wav'; (giver en "Method identifier expected" compiler-fejl).
> LydFil eksisterer vel ikke uden for klassen TLyd?

Jo LydFil er kendt udefra hvis propertien (eller hvordan man nu bøjer det
:) ), står under public delen i klassedefinitionen.

Men du forsøger at sætte værdien af LydFil på klassen og ikke på en
instans af klassen, se:

var
Lyd: TLyd;
begin
Lyd := TLyd.Create(true); // Opretter instansen, men undlader at køre
endnu!
Lyd.LydFil := 'foo.wav';
Lyd.resume;
end;

Claus
--
Claus Christiansen, <mailto:cch@unipeople.dk>

personal: http://www.bigfoot.com/~kruc/; pythia: http://www.pythia.dk
============================================--------------------------
"Computers are useless. They can only give you answers."
- Pablo Picasso (1881-1973)

Esben Piltoft (09-07-2001)
Kommentar
Fra : Esben Piltoft


Dato : 09-07-01 06:33

> Men du forsøger at sætte værdien af LydFil på klassen og ikke på en
> instans af klassen, se:
>
> var
> Lyd: TLyd;
> begin
> Lyd := TLyd.Create(true); // Opretter instansen, men undlader at køre
> endnu!
> Lyd.LydFil := 'foo.wav';
> Lyd.resume;
> end;

Takker mange gange. Med alt den hjælp jeg efterhånden har fået fra denne
nyhedsgruppe, ender det jo med at jeg får lært at programmere (selvom
resterne af mine hjerneceller kæmper kraftigt imod) ;)
--
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Esben Piltoft E-mail: piltoft@mail1.stofanet.dk





Claus Christiansen (09-07-2001)
Kommentar
Fra : Claus Christiansen


Dato : 09-07-01 10:07

"Esben Piltoft" <piltoft@mail1.stofanet.dk> wrote in
news:3b4942b0$0$4659$ba624c82@nntp01.dk.telia.net:

>> Men du forsøger at sætte værdien af LydFil på klassen og ikke på en
>> instans af klassen, se:
>>
>> var
>> Lyd: TLyd;
>> begin
>> Lyd := TLyd.Create(true); // Opretter instansen, men undlader at
>> køre endnu! Lyd.LydFil := 'foo.wav';
>> Lyd.resume;
>> end;
>
> Takker mange gange. Med alt den hjælp jeg efterhånden har fået fra
> denne nyhedsgruppe, ender det jo med at jeg får lært at programmere
> (selvom resterne af mine hjerneceller kæmper kraftigt imod) ;)

Sådan er vi Delphi-folk!, vi hjælper når vi kan - so just ask!

--
Claus Christiansen, <mailto:cch@unipeople.dk>

personal: http://www.bigfoot.com/~kruc/; pythia: http://www.pythia.dk
============================================--------------------------
"Computers are useless. They can only give you answers."
- Pablo Picasso (1881-1973)

Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408926
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste