Verfasst am: 14.05.2013, 11:05
Titel: Neues Feld in struct einfügen nach Button-Click
Hallo Zusammen,
ich arbeite erst seit kurzem mit MATLAB und hoffe, dass ihr mir bei meinem Problem helfen könnt.
Ich habe eine Oberfläche, in der drei Edit-Fenster sind. Nachdem man in die Fenster geschrieben hat und auf einen Button klickt soll ein zusammengefügter (durch Unterstriche getrennter) Name daraus enstehen, das klappt auch schon sehr gut. Bsp.: edit1_edit2_edit3.
Nun soll nach dem Klick zusätzlich dieser zusammengesetzter Name in einem Struct als Feld gespeicht werden (entspricht also dem Feldnamen). Auch das klappt noch sehr gut.
Der Code sieht wie folgt aus:
Code:
function button_save_newdata_Callback(hObject, eventdata, handles) % hObject handle to button_save_newdata (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)
Wenn ich jetzt die Eingabe in den Edit-Fenstern ändere und wieder auf den Button klicke wird das davor gepeicherte Feld im struct einfach überschrieben bzw. es wird jedesmal ein neues struct erstellt. Ich will aber erreichen, dass bei jedem Klick, nachdem man eine neue Eingabe in die Fenster gemacht hat, ein neues Feld im schon vorhandenen struct angelegt wird und die Felder sollen dann untereinander stehen. Ich sitzte jetzt seit Stunden an diesem Problem und komme einfach nicht mehr weiter. Forum und Internet hat mir leider nicht viel gebracht. Ich hoffe, dass es machbar ist .
Verfasst am: 14.05.2013, 12:36
Titel: Re: Neues Feld in struct einfügen nach Button-Click
Hallo derbeshot89,
ASSIGNIN erzeugt "ferngesteuert" Variablen in einem anderen Workspace. Das erhöht die Komplexität eines Programms heftig und kann ein sinnvolles Debuggen dramatisch erschweren. Ich rate ausgesprochen von der Benutzung ab. Es ist viel klarer, wenn man Variablen ordentlich per Input und Output transportiert.
Aber trotzdem ist es möglich:
Code:
Data = evalin('base', 'Data');
Data.(name) = '';
assignin('base', 'Data', Data); %Erstellt Struct mit dem Namen Data.
Aber ich würde so etwas auf keinen Fall machen. Du könntest stattdessen Data per GUIDATA in der Figure speichern und einen speziellen Callback schreiben, der das Struct dann auf Anfrage als Output zurückgibt.
Verfasst am: 14.05.2013, 12:44
Titel: Re: Neues Feld in struct einfügen nach Button-Click
Code:
function button_save_newdata_Callback(hObject, eventdata, handles) % hObject handle to button_save_newdata (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)
das ging echt wirklich schnell und ich Danke dir vielmals . Klappt wunderbar.
Du hast Recht. Ich habe jetzt hier im Forum öfter gelesen, dass man evalin und assignin vermeiden sollte. Ich schau mir mal an, wie ich es anders machen könnte. Vielen Dank
Gruß Fatih
Einstellungen und Berechtigungen
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
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.