Pop-up Menu Issue
显示 更早的评论
I have a pop-up menu having two options:
- Get message from user
- Upload message from file
The 2nd option is working fine but when I choose 1st option it's giving error:
Reference to non-existent field 'message'.
Error in mainmain>Embed_Callback (line 201)
message=handles.message;
The pop-up buttons function is as below:
function popupmenu1_Callback(hObject, eventdata, handles)
% hObject handle to popupmenu1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: contents = cellstr(get(hObject,'String')) returns popupmenu1 contents as cell array
% contents{get(hObject,'Value')} returns selected item from popupmenu1
Contents =cellstr(get(hObject,'String'));
pop_choice=Contents(get(hObject,'Value'));
pop_choice;
if (strcmp(pop_choice,'Enter Message'))
message=get(handles.EnterMessage,'string');
handles.message=message;
elseif (strcmp(pop_choice,'Upload Message'))
[file,Path]=uigetfile('*.txt','Select file to read message,'.')
message = fileread(fullfile(Path,file));
handles.message=message;
end
guidata(hObject,handles)
11 个评论
Zeeshan Abbas
2019-7-26
Rik
2019-7-26
The only possibility is that the field has not been set, so the code you intended to run for the second option is not actually running. Because you didn't share the code that sets the selection text, we have no way to know if you made a typo in either location.
This would probably be prevented by using the value property, instead of comparing to a string. Now you need to change two locations if you ever decide to use a different text.
Zeeshan Abbas
2019-7-26
Zeeshan Abbas
2019-7-26
Rik
2019-7-26
You can use this line to retrieve the value property. It will be an integer describing the selected option.
get(hObject,'Value')
You just need to make sure the callback has run, so the message field has been set and has been stored to the guidata.
Another option is to set a default message in the openFcn.
Zeeshan Abbas
2019-7-26
Rik
2019-7-26
Callback functions can be debugged like any other function. Just put a breakpoint at the first line and go through the code step by step.
Zeeshan Abbas
2019-7-26
Rik
2019-7-26
The string property contains a char array, not a string. This confusion was created when Mathworks introduced strings as a new data type, but (luckily) didn't rename properties or change their data types. That means both paths in your code should lead to char arrays.
So now the question is: have you made sure the message field contains a non-empty char array? And what do you mean with decoding?
Zeeshan Abbas
2019-7-27
回答(0 个)
类别
在 帮助中心 和 File Exchange 中查找有关 Simulink Environment Customization 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!