Ein Singleton wäre hier noch eine Alternative. Eine
Unit verwaltet Instantiierung, Zugriff und Freigabe. So etwa:
Delphi-Quellcode:
Unit MPlayer;
interface
function MediaPlayer : TMediaPlayer;
implementation
var
_mediaPlayer : TMediaPlayer;
_finalized : boolean;
Function MediaPlayer : TMediaPlayer;
Begin
if _mediaPlayer=nil
then
if _finalized
then
Raise Exception.Create('
Application has shut down.')
else
_mediaPlayer := TMediaPlayer.Create;
result = _mediaPlayer;
end;
initialization
_finalized := false;
_mediaplayer :=
nil;
finalization
_finalized := true;
FreeAndNil(_mediaplayer);
end.
Der Zugriff erfolgt nur über die Funktion 'MediaPlayer', die bei Bedarf eine -und nur eine- Instanz erstellt.
Ich persönlich würde den Zugriff auf ein Gerät nicht in einem Formular kapseln, denn das ist dafür nicht zuständig. Das Gerät selbst muss wissen, ob es nur von einer Entität bedient werden kann oder ob es mit mehreren Anwendern klar kommt.