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

Bei Start UserData finden und "merken"

 

BadBor
Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 20.05.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.06.2014, 07:12     Titel: Bei Start UserData finden und "merken"
  Antworten mit Zitat      
Hallo,

Ich habe ein GUI gebaut mit diversen Edit Text-Feldern zur Eingabe von Variablen und Wahl eines Ordners, ausgeführt wird am Ende mit einem Push Button. Das Programm soll darauf ausgelegt sein, schnell und übersichtlich mehrere Durchläufe mit wenigen Änderungen zu erlauben, damit nicht jedes Mal alle Felder neu ausgefüllt werden müssen, lade ich zu Beginn die zuletzt verwendeten Werte aus einer .mat-Datei. Das funktioniert auch alles wunderbar, jetzt möchte ich das ganze quasi optimieren...

Dazu möchte ich nach dem Start der GUI:
    1. prüfen, ob sich im Verzeichnis, in dem das Skript liegt, eine UserData.mat befindet
    2. notfalls eine Standard-Version erzeugen (wenn noch keine existiert)
    3. die UserData.mat einlesen, die struct speichern und in den CreateFcn auf diese Elemente zugreifen, anstatt jedes Mal die UserData.mat neu einzulesen

Das Programm soll auch auf den Linux-Rechnern von Kollegen laufen, im Moment steht aber 15x ein "C:\..."-Pfad im Skript, der jedes Mal geändert werden müsste. Insgesamt will ich durch diese Änderung vor allem die "Installation" erleichtern.

Wenn mir jemand dabei helfen könnte, wäre ich sehr dankbar. Ich habe schon versucht mit der OpeningFcn zu arbeiten, bislang aber ohne Erfolg...
Private Nachricht senden Benutzer-Profile anzeigen


denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 02.06.2014, 08:26     Titel:
  Antworten mit Zitat      
Hallo

zu 1) schaue dir MFILENAME an, damit kannst dir den Pfad holen, wo dein Programm liegt
Code:

doc mfilename
 

wenn du den Pfad hast kannst du dann mit EXIST überprüfen, ob das File UserData schon existiert

zu 2,3) Kann ich jetzt nicht viel sagen, da muss du die vorhandene Routine fürs Einlesen nutzen, das würde ich dann in die OpeningFcn intergrieren

in der OpeningFcn
Code:

root_path = fileparts(mfilename('fullpath'));
if exist(fullfile(root_path, 'UserData.mat'), 'file')
  % hier deine Methode fürs Einlesen aufrufen
else
  % Erzeuge Standard Struct( würde auch extra Methode dazu schreiben)
end
 
Private Nachricht senden Benutzer-Profile anzeigen
 
BadBor
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 20.05.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.06.2014, 08:48     Titel:
  Antworten mit Zitat      
Vielen Dank!

mfilename hilft mir auf jeden Fall weiter (insbesondere mit ('fullpath') natürlich).
Sollte das denn eigentlich funktionieren, dass ich in der OpeningFcn handles setze (wodurch auch immer) und bei späteren CreaeFcn abrufe?
Wenn ich das bislang gemacht habe, hat sich MATLAB beim Ausführen an den entsprechenden Stellen beschwert, dass es keinen Input hatte...
Private Nachricht senden Benutzer-Profile anzeigen
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 02.06.2014, 09:27     Titel:
  Antworten mit Zitat      
Hallo

CreateFcn werden noch vor der OpeningFcn aufgerufen, deswegen haben CreateFcn keine Information über Handles.
An der Stelle kann dein Vorhaben nicht funktionieren. Besser wäre in der OpeningFcn deine CallbackFcn von Pushbutton aufzurufen, eigentlich muss deine Callback Funktion auf zwei Funktionen trennen. Also in der Callback nur Auswahl-Menu für den Pfad, und eine extra Funktion die das Laden der UserData übernimmt, die letzte Funktion kannst du dann direkt in der OpeningFcn aufrufen
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.