Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Dekleration wird nicht erkannt?!? (https://www.delphipraxis.net/117345-dekleration-wird-nicht-erkannt.html)

Poseidon 16. Jul 2008 11:54


Dekleration wird nicht erkannt?!?
 
Hallo Delphianer,

mit meiner neuen, selbestgemachten ( :coder: ) Komponente soll man die Lautstärke von TMediaplayer verändern können. Hier der Code:
Code:
unit Component1;

interface

uses
  SysUtils, Classes, mmsystem, mplayer, Windows;

   const
   MCI_SETAUDIO = $0873;
   MCI_DGV_SETAUDIO_VOLUME = $4002;
   MCI_DGV_SETAUDIO_ITEM = $00800000;
   MCI_DGV_SETAUDIO_VALUE = $01000000;
   MCI_DGV_STATUS_VOLUME = $4019;

   type
   MCI_DGV_SETAUDIO_PARMS = record
     dwCallback: integer;
     dwItem: integer;
     dwValue: integer;
     dwOver: integer;
     lpstrAlgorithm: PChar;
     lpstrQuality: PChar;
   end;
type
   MCI_STATUS_PARMS = record
     dwCallback: integer;
     dwReturn: integer;
     dwItem: integer;
     dwTrack: integer;
   end;


type
  TMediaplayerVolume = class(TComponent)
  private
 
      FVolume: integer;
  FMediaplayer: TMediaplayer;

  //function MPGetVolume(MP: TMediaPlayer): Integer;
    { Private-Deklarationen }
  protected
   

    { Protected-Deklarationen }
  public
     
  function GetVolume : integer;
    { Public-Deklarationen }
  published
  property Volume : integer read   FVolume write FVolume;
  property Mediaplayer: TMediaplayer read   FMediaplayer write FMediaplayer;
    { Published-Deklarationen }
  end;

procedure Register;
 procedure MPSetVolume(MP: TMediaPlayer; Volume: Integer) ;
// procedure GetVolume;


implementation

procedure Register;
begin
  RegisterComponents('LPI', [TMediaplayerVolume]);
end;

 function GetVolume : integer;
begin
 MPSetVolume(FMediaPlayer, FVolume) ;
end;

  procedure MPSetVolume(MP: TMediaPlayer; Volume: Integer) ;
var
   p: MCI_DGV_SETAUDIO_PARMS;
begin
   p.dwCallback := 0;
   p.dwItem := MCI_DGV_SETAUDIO_VOLUME;
   p.dwValue := Volume;
   p.dwOver := 0;
   p.lpstrAlgorithm := nil;
   p.lpstrQuality := nil;
   mciSendCommand(MP.DeviceID, MCI_SETAUDIO, MCI_DGV_SETAUDIO_VALUE or MCI_DGV_SETAUDIO_ITEM, Cardinal(@p)) ;
end;

function MPGetVolume(MP: TMediaPlayer): Integer;
var
   p: MCI_STATUS_PARMS;
begin
   p.dwCallback := 0;
   p.dwItem := MCI_DGV_STATUS_VOLUME;
   mciSendCommand(MP.DeviceID, MCI_STATUS, MCI_STATUS_ITEM, Cardinal(@p)) ;
   Result := p.dwReturn;
end;



end.
In der function
Code:
function GetVolume : integer;
begin
 MPSetVolume(FMediaPlayer, FVolume) ;
end;
kennt Delphi FMediaplayer und FVolumen nicht :wall: . Dabei habe ich sie hier doch deklerirt
Code:
private
 
      FVolume: integer;
  FMediaplayer: TMediaplayer;

  //function MPGetVolume(MP: TMediaPlayer): Integer;
    { Private-Deklarationen }
  protected
   

    { Protected-Deklarationen }
  public
     
  function GetVolume : integer;
    { Public-Deklarationen }
  published
  property Volume : integer read   FVolume write FVolume;
  property Mediaplayer: TMediaplayer read   FMediaplayer write FMediaplayer;
    { Published-Deklarationen }
  end;
Hoffe es ist alles einleuchtend. Danke im voraus

mfg Poseidon

Meflin 16. Jul 2008 11:56

Re: Dekleration wird nicht erkannt?!?
 
Ganz einfach ;)
Delphi-Quellcode:
function TMediaPlayerVolume.GetVolume : integer;

Sharky 16. Jul 2008 11:57

Re: Dekleration wird nicht erkannt?!?
 
Hai Poseidon,

wenn ich es richtig sehe fehlt in deiner Implementation der Klassenname für deine Methode:

Code:
function [b]TMediaplayerVolume.[/b]GetVolume : integer;
begin
 MPSetVolume(FMediaPlayer, FVolume) ;
end;
[Edit]Und wieder war ich zu langsam

pilic 16. Jul 2008 11:58

Re: Dekleration wird nicht erkannt?!?
 
Das liegt daran, dass GetVolume keine Methode der Klasse TMediaplayerVolume ist.

Edit: ich auch

Poseidon 16. Jul 2008 12:02

Re: Dekleration wird nicht erkannt?!?
 
Vielen dank, das ging wirklich sehr schnell :thumb: :dp:


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:51 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz