Hej wiii löste det med hjälp av Cougarina på chatten(tack *kyss*) Hej Bj hej Hej Hej igen >En sak som jag inte fixar att förstå.Du får det att funka medUnitfel
jag vill ha en egen unit för ljuden jag ska ha.
jag får inte inkluderingen att funka.
jag har gjort detta förrut men i delphi 3.
gör precis så som jag kommer ihåg det
men funkar det? nej
jag skriver en procedure:
<code>
unit Unit2;
interface
uses SysUtils,QForms,MMSystem;
implementation
type
soundEngine = class
public
procedure Plays(filename:string);
end;
procedure soundEngine.Plays(fileName:string);
var mapp:string;
begin
mapp := ExtractFilePath(application.ExeName)+fileName;
sndPlaySound(PCHAR(mapp), SND_NODEFAULT);
end;
end.
</code>
Jag har testat sndPlaySound i en vanlig form unit och det funkar.
sen i form-unit skriver jag:
<code>
{...}
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls,Unit2;
{...}
procedure TForm1.Button1Click(Sender: TObject);
begin
Plays('flytt.wav');
end;
{..}
</code>
men det funkar inte...=(
får: Undeclared identifier: 'Plays' och pekar på Plays('flytt.wav');
hoppas på svar
/bjSv: Unitfel
felet var att
<code>
type
soundEngine = class
public
procedure Plays(fileName:string);
end;
</code>
var tvungen att ligga över implementation
och sen i unit2 var jag också tvungen att skriva: sound: soundEngine;
och använda uses unit2 under implementation i unit1
nu funkar det prima
/bjSv: Unitfel
Förstår inte riktigt vitsen med att krångla med en
Type soundEngine Class
Sår här skriver jag Unit2
unit Unit2;
interface
uses SysUtils,QForms,MMSystem;
procedure Plays(fileName:string);
implementation
procedure Plays(fileName:string);
var
mapp:String;
begin
//mapp := ExtractFilePath(application.ExeName)+fileName;
sndPlaySound(PCHAR(mapp), SND_ASYNC);
end;
end.
mvh
Sven
Återkommer om Resource fil med Wave och sndPlaySound
DSSv: Unitfel
>Förstår inte riktigt vitsen med att krångla med en
Type soundEngine Class
trodde man var tvungen att ha klasser till allt?
missförstånd från mig
men sen ska jag ha massa andra functioner och tycker det verkar bäst med en klass?
tack för koden
men du har ju gjort en kommentar av
mapp := bla bla
och sen
sndPlaySound(PCHAR(mapp), SND_ASYNC);
och då kan man ju inte spela upp filen?
/bj Sv: Unitfel
Ja kommentaren skall du klart ta bort.
Jag testar alltid mina svar , jag hade ingen wavefil
i applikationsmappen,jag skickade hela sökvägen
som filnamn. du skall naturligtvis ha den delen med.
En sak som jag inte fixar att förstå.Du får det att funka med
Var
Sound : soundEngine ;
Du använder ju inte variabeln Sound till något vad jag kan se.??
Du får gärna förklara för du börjar bli mer rutinerad än jag
på Delphi. Bra jobbat Bj.
Jag skulle gärna vilja kolla hela dit soundEngine Class exempel
körde själv i väggen på ett liknande projekt.
Som tidigare sagts du kan göra din wave .res fil i det verktyget
som finns i VB, sedan inkluderar du denna fil med tex.
{$R 'D:\MinaProjekt\filNamn.res'} kommando vid kompilering läs
http://www.jpl.nu/~magnus/delphiqa/articles/0155.html noga
mvh
SvenSv: Unitfel
>men sen ska jag ha massa andra functioner och tycker det verkar bäst med en klass?
Ok men om du gör dem Public så är hela vitsen förlorad.
Anledning till att man Typar Classser är att man
vill skydda variabler Funktioner som Private
Dvs göra dem oåtkomliga för yttervärden,man kan bara komma åt
dem via ombud.I ditt exempel soundEngine.något
mvh
SvenSv: Unitfel
Var
Sound : soundEngine ;
Du använder ju inte variabeln Sound till något vad jag kan se.??
den använder jag i unit1 (delvis form unit) med formklassen osv
tex
sound.playS('flytt.wav');
/bj