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

Fehler nach erneuter Eingabe

 

T_Meister
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 85
Anmeldedatum: 14.12.11
Wohnort: BS
Version: 2013a&b, 2014a&b
     Beitrag Verfasst am: 21.03.2012, 18:06     Titel: Fehler nach erneuter Eingabe
  Antworten mit Zitat      
Hallo,

wenn ich in meinem Edit Fester einen Wert eingebe, wird dieser korrekt übergeben und auch korrekt in meinen Struct geschrieben.
Code:
function Wert2_Callback(hObject, eventdata, handles)
Wert_2 = str2double(get(hObject,'String'));str_2=get(handles.KP_Auswahl_2,'String');
ausgabe_2=str_2{get(handles.KP_Auswahl_2,'value')};

if (strcmp(ausgabe_2,'Max. Beschleunigung'))        
        set(handles.Aus_Besch,'String',Wert_2);
        handles.Aus_Besch = str2double(get(hObject,'String'));              
        handles.ManStruct(1).Kennparameter.Beschleunigung=handles.Aus_Besch;
        assignin('base','handles',handles);



Wenn ich aber eine andere Zahl eingebe, quasi überschreibe, kommt folgender Fehler:

??? Error using ==> set
Invalid handle object.

Error in ==> Kennparametertool_v14>Wert2_Callback at 564
set(handles.Aus_Dauer,'String',Wert_2);

Error in ==> gui_mainfcn at 96
feval(varargin{:});

Error in ==> Kennparametertool_v14 at 42
gui_mainfcn(gui_State, varargin{:});

Error in ==> @(hObject,eventdata)Kennparametertool_v14('Wert2_Callback',hObject,eventdata,guidata(hObject))


??? Error while evaluating uicontrol Callback

Kann mir da jemand weiterhelfen?

Gruß
Thorsten
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 21.03.2012, 21:36     Titel:
  Antworten mit Zitat      
Hallo,

ich sehe die Zeile, in der der Fehler passiert, gar nicht im Code-Ausschnitt.

Wahrscheinliches Problem: du überschreibst in deinem Code irgendwo handles.Aus_dauer durch etwas der Form:

Code:
handles.Aus_dauer = ...
...
guidata(hObject, handles)


Das Überschreiben von Teilen der Handles-Struktur sollte aber vermieden werden, da sie sonst in der Zukunft nicht mehr korrekt verwendet werden kann.

Hattest du so ein Problem nicht sogar schonmal, oder war das jemand anders?

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

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 85
Anmeldedatum: 14.12.11
Wohnort: BS
Version: 2013a&b, 2014a&b
     Beitrag Verfasst am: 22.03.2012, 10:25     Titel:
  Antworten mit Zitat      
Code:
Wert_2 = str2double(get(hObject,'String'));
% Wenn keine korrekte Eingabe erfolgt ist
if isnan(Wert_2)
    Wert_2 = NaN;
    set(hObject,'String',Wert_2);
    errordlg('Die Eingabe muss eine Zahl sein !', 'Error')
end
% Mit str_2 und ausgabe_2 wird nur POP-Up 2 untersucht, welches direkt im
% Bezug zu Wert1 steht
str_2=get(handles.KP_Auswahl_2,'String');
ausgabe_2=str_2{get(handles.KP_Auswahl_2,'value')};

if (strcmp(ausgabe_2,'Max. Beschleunigung'))        
        set(handles.Aus_Besch,'String',Wert_2);
        handles.Aus_Besch = str2double(get(hObject,'String'));              
        handles.ManStruct(1).Kennparameter.Beschleunigung=handles.Aus_Besch;
        assignin('base','handles',handles);
elseif (strcmp(ausgabe_2,'Regelungsdauer'))  
        set(handles.Aus_Dauer,'String',Wert_2);
        handles.Aus_Dauer = str2double(get(hObject,'String'));            
        handles.ManStruct(1).Kennparameter.Regelungsdauer=handles.Aus_Dauer;
        assignin('base','handles',handles);


hatte die Zeile vergessen, aber es kommt auf das selbe raus. Nach der ersten Eingabe erfolgt immer der selbe Fehler, siehe oben. Sinn nach der If/elseif soll sein, dass ein Wert in Aus_ übergeben wird und dieser in einen Struct geschrieben wird.

Ich weiß nicht genau ob ich das war, wüsste ich so nicht, aber möglich wäre vielleicht in einem anderen Zusammenhang.

Gruß
Thorsten
Private Nachricht senden Benutzer-Profile anzeigen
 
T_Meister
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 85
Anmeldedatum: 14.12.11
Wohnort: BS
Version: 2013a&b, 2014a&b
     Beitrag Verfasst am: 22.03.2012, 10:33     Titel:
  Antworten mit Zitat      
Trotzdem Danke für deinen Tipp, hab es jetzt gelöst bekommen Smile

So funktioniert es jetzt perfekt:

Code:
elseif (strcmp(ausgabe_1,'Regelungsdauer'))
     set(handles.Aus_Dauer,'String',Wert_1);    
     handles.ManStruct(1).Kennparameter.Regelungsdauer=Wert_1;
     assignin('base','handles',handles);


Gruß
Thorsten
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.