Reference to non-existent field 'a'.

45 vues (au cours des 30 derniers jours)
Josheen Mariam Jacob
Josheen Mariam Jacob le 29 Jan 2020
I was trying to fetch a string variable(a)and set it to another variable(b) using GUI .'a' is the tag for user input value and 'b' is output variable to be displayed.Please find the below code and error.
function fetch_Callback(hObject, eventdata, handles)
% hObject handle to fetch (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
%x = handles.a;
handles = guidata(hObject);
a = str2double(get(handles.a,'String'));
set(handles.b,'String',a);
guidata(hObject,handles);
ERROR:
fetchvariable
Reference to non-existent field 'a'.
Error in fetchvariable>fetch_Callback (line 106)
A = str2double(get(handles.a,'String'));
Error in gui_mainfcn (line 95)
feval(varargin{:});
Error in fetchvariable (line 42)
gui_mainfcn(gui_State, varargin{:});
Error in
matlab.graphics.internal.figfile.FigFile/read>@(hObject,eventdata)fetchvariable('fetch_Callback',hObject,eventdata,guidata(hObject))
Error while evaluating UIControl Callback.
  4 commentaires
Josheen Mariam Jacob
Josheen Mariam Jacob le 30 Jan 2020
Please find the attached fig file if needed.
Jakob B. Nielsen
Jakob B. Nielsen le 31 Jan 2020
function fetch_Callback(hObject, eventdata, handles)
% hObject handle to fetch (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
%x = handles.a;
handles = guidata(hObject);
keyboard
a = str2double(get(handles.a,'String'));
set(handles.b,'String',a);
guidata(hObject,handles);
Put in a keyboard break, run your code as you would, and then type handles in the command window. This will give you a list of structure fields contained within handles. Then it is easier to see what is going on "inside" the function. In particular, see if a exists - because it would appear, from your error message, that it does not.

Connectez-vous pour commenter.

Réponses (1)

Constantino Carlos Reyes-Aldasoro
This error is arising from trying to read a field from a structure, when the field is not existing for example
>> example.a = 1
example =
struct with fields:
a: 1
>> example.b=2
example =
struct with fields:
a: 1
b: 2
>> c=example.c
Reference to non-existent field 'c'.
>> c=example.b
c =
2
So, you are trying to read 'a' from the handles, when it is not present there. That is what you have to sort. If you want to know which fields are present in your structure try:
>> fieldnames(example)
ans =
2×1 cell array
{'a'}
{'b'}
and to test if one exists in particular
>>
>> isfield(example,'a')
ans =
logical
1

Catégories

En savoir plus sur Migrate GUIDE Apps dans Help Center et File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by