WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Wie kann ich dem Objekt seinen Variablennamen beibringen?

 

Nicolas S.
Forum-Century

Forum-Century


Beiträge: 146
Anmeldedatum: 15.07.09
Wohnort: ---
Version: R2014a/b
     Beitrag Verfasst am: 25.09.2009, 07:43     Titel: Wie kann ich dem Objekt seinen Variablennamen beibringen?
  Antworten mit Zitat      
Hallo zusammen,

gibt es eine Möglichkeit, einem Objekt seinen eigenen Variablennamen beizubringen?

Hintergrund: Bei einer Überprüfung ob korrekter Parameter, die automatisch über einen Listener ausgeführt wird, will ich im Fehlerfalls eine Ausgabe haben, in welchem meiner Objekte der Fehler überhaupt aufgetreten ist. Leider sind die Fehlermeldungen, die von einer von einem Listener aufgerufenen Funktion gemeldet werden, nie so wirklich richtig lokalisierbar (es wird nur auf den Listener verwiesen).

Also halte ich es für sinnvoll, wenn das Objekt seinen eigenen Variablennamen kennt, dann kann eine Fehlermeldung so aussehen:
Code:

error(' Inconsistent parameters in %s ',obj.varname);
 


Eine primitive Lösung habe ich schon:
Code:

            % Variablennamen herausfinden
            varlist = evalin('base','who');
            len = length(varlist);
            for idx = 1:len
                var = varlist{idx};
                if all(evalin('base',var) == obj)
                   obj.varname = var;
                   break;
                end
            end
 

Kennt jemand auch eine schöne Lösung?

Grüße
Nicolas
_________________

--
The programmer suggested it.
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.492
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 25.09.2009, 08:07     Titel:
  Antworten mit Zitat      
Hallo,

ich denke mal

Code:


Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Nicolas S.
Themenstarter

Forum-Century

Forum-Century


Beiträge: 146
Anmeldedatum: 15.07.09
Wohnort: ---
Version: R2014a/b
     Beitrag Verfasst am: 25.09.2009, 08:19     Titel:
  Antworten mit Zitat      
Hallo,

hatte ich auch zunächst dran gedacht, aber:

inputname: "Variable name of function input, This command can be used only inside the body of a function."

Dummerweise ist der Variablenname eines Objektes der Output einer Funktion (des Konstruktors).

Grüße
Nicolas
_________________

--
The programmer suggested it.
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.492
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 25.09.2009, 10:41     Titel:
  Antworten mit Zitat      
In normalen Methoden muss ja als erstes Argument das Objekt übergeben werden. inputname(1) sollte also der Name des Objekts sein?

Mit Listenern kenne ich mich nicht so aus, aber da könnte das in src oder evtdata (Standardparameter nach Doc) drinstehen?

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Nicolas S.
Themenstarter

Forum-Century

Forum-Century


Beiträge: 146
Anmeldedatum: 15.07.09
Wohnort: ---
Version: R2014a/b
     Beitrag Verfasst am: 25.09.2009, 13:46     Titel:
  Antworten mit Zitat      
src ist eine Kopie des handles des aufrufenden Objektes- kennt aber auch nicht den Variablennamen.

inputname(1) liefert leer ('') zurück (komisch eigentlich, obwohl es parametrisch und nicht mit Wert aufgerufen wird).

Grüße
Nicolas
_________________

--
The programmer suggested it.
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.492
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 25.09.2009, 14:26     Titel:
  Antworten mit Zitat      
Hmmm... wie wäre es mit
Code:
obj.varname = inputname(1);

in Funktionen, bei denen der Listener aktiv werden könnte? Ich weiss, auch nur ein Workaround...

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2024 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.