Hallo zusammen,
danke für eure Unterstützung.
Vorhaben (ganz kurz):
Ich schreibe gerade an einer Haussteuerung. Ein Hauptrechner (vermutl. ein Tablet), der div. Mikrocontroller im Haus via LAN ansteuert. Prinzipiell funktioniert das ganze schon recht gut. Nun möchte ich auch ein Webradio mit einbinden. Am Panel soll dieses aber separat an bzw. ausgeschaltet werden, da ich die Endstufen, die daran hängen gleich mit an bzw. ausschalte. Meine Idee war nun, mit dem Erzeugen des Objektes (mPlayer) aus der zugehörigen Klasse (TMplayer) die Controller anzusteuern. Im Konstruktor an, im Destruktor aus. Das ganze wird dann per Schalter im Programm realisiert. Folglich soll beim 1. Druck das ganze an und bei erneutem Drücken halt aus geschaltet werden. Dazu möchte ich prüfen, welchen Zustand das ganze hat und war der Meinung, dass ich dies idealerweise damit erledigen kann, indem ich prüfe, ob das Objekt erzeugt ist, oder eben nicht.
Klasse:
Delphi-Quellcode:
type
TMPlayer = class
Private
playlist:TStringlist;
public
constructor create();
//Methoden / Eigenschaften
destructor Destroy(); override;
end;
Das Objekt:
Delphi-Quellcode:
procedure TMainform.spSkinButtonMplayer3Click(Sender: TObject);
var mPlayer:TMPlayer;
begin
if not assigned(mPlayer) then
mPlayer:=TMPlayer.create
else freeandnil(mplayer);
end;
Irgendwie zerstört ihr gerade meine Philosophie...
Im obigen Listing ist aber ganz eindeutig mPlayer eine lokale Variable für die Instanz des zu testenden Objektes. Ganz so, wie meine Vorgänger schon sagten. mPlayer muss aber global zur Anwendung definiert werden, zum Beispiel im Anwendungsformular. Sonst ist mPlayer nur innerhalb der Methode TMainform.spSkinButtonMplayer3Click() gültig und das reicht für den Test nicht aus.
Damit der Topf nicht explodiert, lässt man es ab und zu mal zischen.