Einzelnen Beitrag anzeigen

Benutzerbild von DataCool
DataCool

Registriert seit: 10. Feb 2003
Ort: Lingen
909 Beiträge
 
Delphi 10.3 Rio
 
#1

waveOutSetVolume aus mmsystem

  Alt 11. Jun 2003, 11:16
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]
  Mit Zitat antworten Zitat