Hi Leute,
ich möchte gerne die Wave-Ausgabe Lautstärke ändern sprich per Schieberegler anpassen.
Dazu habe ich mir die Hile der Funktion waveOutSetVolume angeschaut und habe mir folgenden Code ausgedacht :
Delphi-Quellcode:
// Konvertiert einen Integer Wert in einen Hexadezimal-String
Function InttoHexStr(Num : Byte) : String;
Var EZ, ZZ : Byte;
EZStr, ZZStr : String;
begin
EZ := Num div 16;
ZZ := Num mod 16;
if ez > 9 then begin
Case EZ of
10 : EZStr := 'A';
11 : EZStr := 'B';
12 : EZStr := 'C';
13 : EZStr := 'D';
14 : EZStr := 'E';
15 : EZStr := 'F';
end;
end
else
EZStr := inttostr(EZ);
if Zz > 9 then begin
Case ZZ of
10 : ZZStr := 'A';
11 : ZZStr := 'B';
12 : ZZStr := 'C';
13 : ZZStr := 'D';
14 : ZZStr := 'E';
15 : ZZStr := 'F';
end;
end
else
ZZStr := inttostr(ZZ);
Result := EZStr+ZZStr;
end;
// hier kommen als Value nur Werte zwischen 0 und 255 in Frage
// da meine Trackbar auf diese Werte begrenzt ist
procedure TTWKom.setVolume(Value: Longint);
var
v : DWORD;
a : Longint;
HexStr : String;
begin
if active then
begin
fVolume := Value;
// get Volume-Value
HexStr := InttoHexStr(Value);
// set this value for right and left channel
HexStr := '$'+HexStr+HexStr;
v := StrToInt(HexStr);
waveoutsetvolume(acmOut.FWaveOutHandle, v);
end;
end;
Irgentwie funktioniert das ganze nicht richtig, kann mir jemand sagen, warum ?
Gruß Data
[edit=Daniel B]Delphi-Tags eingefügt. MfG Daniel B.[/edit]