Wenn ich das File separat ausführe funktioniert alles wunderbar, wenn ich es aber mit dem Pushbutton über den callback ausführen will dann passiert gar nix.
Wenn du den Debugger nutzen würdest, würdest du vermutlich feststellen, dass sehr wohl etwas passiert - nur dass die Variable in den Funktions-Workspace geschrieben wird und nach Beendigung des Callbacks nicht mehr zur Verfügung steht.
Zitat:
Ich bin mir nicht sicher ob ich das mit Application Data richtig verstanden habe, könntest du es mir mit deinen Worten erklären und vielleicht ein Beispiel machen?
In der verlinkten Doku findest du an sich Beispiele.
Vielen Dank für den Tipp mit der Funktion Breakpoint.
Die Variable wird mir soweit normal geschrieben dann aber direkt wieder gelöscht und zwar bevor ich zu diesem Code hier komme: und zwar springt mir der Breakpoint zu feval(varargin{:}); in der sechsten Linie.
% Set serializable of objects created in the above callback to off in % design time. Need to check whether figure handle is still valid in % case the figure is deleted during the callback dispatching. if designEval && ishghandle(fig) set(setdiff(findall(fig),beforeChildren), 'Serializable','off');
end else if gui_State.gui_Singleton
gui_SingletonOpt = 'reuse';
else
gui_SingletonOpt = 'new';
end
Das ist das einzige was ich gefunden habe Betreff getappdata, ich will die Daten aber nicht im Callback benützen sondern erstmal speichern am besten so das sie immer abrufbar sind das wollte ich erreichen mit der globalen Variable.
Ist mit hObject.Parent das Gui1 gemeint?
So habe ich setappdata eingebunden:
Code:
% --- Executes on button press in SudokuEinlesen. function SudokuEinlesen_Callback(hObject, eventdata, handles) % hObject handle to SudokuEinlesen (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)
handles=guidata(hObject);
set(handles.Sofortloesung, 'Enable','On');
set(handles.Lehrer, 'Enable','On');
set(handles.ZahlUmZahlMitTaste, 'Enable','On');
set(handles.ZahlUmZahlMitTimer, 'Enable','On');
Mit dem Breakpoint sehe ich das die Daten eingelesen werden die Variable SudokuMatrix wird geschrieben, wird dann aber wieder entfernt sobald der Pfeil bei setappdata landet.
wo gehört denn getappdata hin? Ich blicke da überhaupt nicht mehr durch, das kann doch nicht so schwer sein ein anderes M.File über einen Pushbutton auszuführen und die darin vorhandenen Daten im Workspace zu speichern.
ich will die Daten aber nicht im Callback benützen sondern erstmal speichern am besten so das sie immer abrufbar sind das wollte ich erreichen mit der globalen Variable.
Nimm doch bitte mal Tipps an. An jeder erdenklichen Stelle, so auch hier, wird von globalen Variablen abgeraten - und so eben auch hier.
Wenn die Daten zur GUI gehören (und warum würdest du das sonst aus der GUI heraus aufrufen), dann ist es nicht sinnvoll, die Daten irgendwo anders abzulegen.
Zitat:
wo gehört denn getappdata hin?
Da, wo du innerhalb der GUI mit den Daten weiterarbeiten möchtest.
Zitat:
das kann doch nicht so schwer sein ein anderes M.File über einen Pushbutton auszuführen und die darin vorhandenen Daten im Workspace zu speichern.
Das ist an sich auch nicht schwer. Inzwischen weiß ich aber offen gesagt nicht, wie ich es noch erklären soll.
Das ist das einzige was ich gefunden habe Betreff getappdata, ich will die Daten aber nicht im Callback benützen sondern erstmal speichern am besten so das sie immer abrufbar sind das wollte ich erreichen mit der globalen Variable.
Höre auf unsere magischen Worte:
Lass das sein mit den globalen Variablen!
Wirklich! Man bohrt sich damit nur ein Loch ins Knie.
Generationen von Programmierern versuchen den Programmier-Anfängern diese Unsitte auszutreiben, weil sie schon so viele Software-Projekte haben scheitern sehen, die wegen des Spaghetti-GLOBAL-GOTO-Sumpfs einfach unwartbar und undebugbar geworden sind.
"Erstmal speichern" ist der falsche Ansatz.
Funktionen sind deutlich eleganter und zuverlässiger als Scripts. Versuche Sudoku_Einlesen inm eine Funktion umzuwandeln und lass Dir die Outputs zurückgeben. Dann kannst Du sich einfach im GUI-Callback wieder in die entsprechenden Felder schreiben.
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.