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

GUI edit text auslesen und wiedergeben

 

apfel
Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 10.05.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.05.2014, 00:46     Titel: GUI edit text auslesen und wiedergeben
  Antworten mit Zitat      
Hallo!
Schonmal vorweg ich bin blutiger Anfänger und wurde ins kalte MATLAB Wasser geworfen und möchte etwas hinbekommen:

Ein bestehendes Programm (es ist eine riesige function), welches eine .m Datei als Output mit Informationen gibt soll so verändert werden, dass zusätzliche einfache Informationen an die .m Datei angehängt werden.

Das Programm funktioniert über eine GUI, dem ich 6 edit text Felder hinzugefügt habe. Der Inhalt dieser Text Felder soll hier weiterverwendet werden:

Code:

      fprintf(fid,['variablen = cell(1,3);\n']);
      fprintf(fid,['variablen{1} =',FELD1,';\n']);
      fprintf(fid,['variablen{2} =',FELD2,';\n']);
      fprintf(fid,['variablen{3} =',FELD3,';\n\n']);
      fprintf(fid,['einheiten = cell(1,3)'';\n']);
      fprintf(fid,['einheiten{1} =',FELD4,';\n']);
      fprintf(fid,['einheiten{2} =',FELD5,';\n']);
      fprintf(fid,['einheiten{3} =',FELD6,';\n']);


(ich weiß, dass man das noch schöner hinschreiben kann mit dem fprintf, aber der Übersicht halber hab ich's so gelassen Razz)
Diese 8 Zeilen sollen der Outputdatei angehängt werden (dabei sollten nur FELD 1-6 interessant sein).

Meine Frage/Bitte:
Wie bekomme ich aus den 6 GUI-Feldern die eingegebenen Informationen heraus, dass sie im Code FELD1-6 wiedergegeben werden?
Vorallem habe ich noch kaum Ahnung wie das mit den Callbacks funktioniert, da das Programm eine function ist, kann ich nicht so einfach weitere functions zwischenschieben.

Die Theorie ist mir klar: 6 Variablen werden abgespeichert und anderweitig verwendet.
Klingt eigentlich ziemlich einfach, aber wie gesagt ich bin Anfänger und stundenlanges Rumprobieren und googlen hat nicht weitergeholfen.
Sollten noch Informationen fehlen oder etwas unklar sein, lasst es mich wissen!
Danke für's Lesen (und womögliches Lösen)!
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.499
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 10.05.2014, 09:06     Titel:
  Antworten mit Zitat      
Hallo,

Code:
FELD1 = get(handles.edit1, 'String');

edit1 ist dabei die Tag-Eigenschaft und wird per Default hochgezählt (edit2, edit3,...)

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
apfel
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 10.05.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.05.2014, 18:45     Titel:
  Antworten mit Zitat      
Hallo!
Vielen Dank für die schnelle Antwort, es kommt aber folgende Fehlermeldung im Command Window:

Code:

Undefined function or variable "handles".

Error in PROGRAMM (line XYZ)
      FELD1 = get(handles.edit1, 'String');
 
Error while evaluating uicontrol Callback
 


Gibt es etwas was ich im property inspector vergessen habe?
Die Callback-Felder habe ich leer gelassen.
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.499
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 10.05.2014, 20:10     Titel:
  Antworten mit Zitat      
Hallo,

ich bin davon ausgegangen, dass du deine GUI mit GUIDE erstellst.
Ist das korrekt, oder erstellst du die GUI programmatisch?

In irgendeiner Form musst du an die Handles auf die editierbaren Textfelder kommen - wie du das machst, ist letztlich eine Frage dessen, wie deine GUI implementiert ist.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
apfel
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 10.05.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.05.2014, 23:14     Titel:
  Antworten mit Zitat      
Hallo,
die GUI wird über Guide ausgeführt.
Das Programm, welches ich erweitere, funktioniert scheinbar über Callbacks in den anderen edit Text Feldern, da steht z.B im edit text Callback "PROGRAMM('edit1')" und im Programm würd es über "case 'edit1'" abgerufen.
Das aber auf die anderen Felder anzuwenden funktioniert nicht ganz Very Happy

Ich probiere erstmal ein bisschen weiter, danke so weit für die Hilfe!
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 10.05.2014, 23:20     Titel: Re: GUI edit text auslesen und wiedergeben
  Antworten mit Zitat      
Hallo apfel,

Programme, die andere Programme schreiben, ist eine Idee von Programmier-Beginnern oder wirklichen Hardcore-Freaks.
Es ist deutlich übersichtlicher Daten und Programme streng voneinander zu trennen. Du würdest dann z.B. nicht eine Reihe unterschiedlicher M-files schreiben, sondern hast ein M-File, dass die Daten aus unterschiedlichen MAT-Files einliest. Siehe LOAD und SAVE.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
apfel
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 10.05.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.05.2014, 19:24     Titel:
  Antworten mit Zitat      
Hallo Jan,
was ich anzufügen habe schreibt eigentlich kein Programm.
Es fügt nur etwas an die Output .m Datei an, damit die Datei mit einem anderen Programm einfacher weiterverarbeitet werden kann.
Ich glaube ich habe es komplizierter beschrieben als es eigentlich ist.
Private Nachricht senden Benutzer-Profile anzeigen
 
apfel
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 10.05.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.05.2014, 23:41     Titel:
  Antworten mit Zitat      
So, ich habe es jetzt hinbekommen.

Falls es wen in Zukunft interessiert:
Im Grunde hat Harald schon die richtige Antwort gegeben, ich musste nur die Programmstruktur weiter entschlüsseln.

Code:
FELD1 = get(handles.edit1, 'String');


Hat nicht funktioniert, weil das Programm mit einer global Variable arbeitet und nur Variablen über diese global lesen und schreiben kann.
Außerdem war das Variablen ablesen vom GUI etwas anders als über handles (wie gesagt ich kenne mich fast gar nicht aus).

Code:
global vari

case edit1    
    vari.daten.FELD1=get(findobj('tag','edit1'),'string');


Über einen Callback im edit1-Textfeld wird der case "edit1" abgerufen (Callback: programmname('edit1')).
Der Inhalt von edit1 wird abgelesen und in Variable FELD1 gespeichert (mit der Oberstruktur von "daten" und "vari"). Wie man sieht gibt es mehrere verschachtelte Variablenstrukturen.

Ausgegeben wird es im fprintf dann so:

Code:
fprintf(fid,['variablen{1} =',mat2str(vari.daten.FELD1),';\n']);


Das dann noch für die anderen 6 Felder und die Output-Datei zeigt wie gewünscht zusätzlich am Ende folgende 8 Zeilen an, mit denen dann mit einem anderen Programm weitergearbeitet wird:

Code:
variablen = cell(1,3);
variablen{1} ='inhalt-in-edit1';
variablen{2} ='inhalt-in-edit2';
variablen{3} ='inhalt-in-edit3';

einheiten = cell(1,3);
einheiten{1} ='inhalt-in-edit4';
einheiten{2} ='inhalt-in-edit5';
einheiten{3} ='inhalt-in-edit6';


Mit den jeweiligen Inhalt den man in die 6 Textboxen eingegeben hat.

Vielen Dank für Eure Mühe!
/done
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 - 2025 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.