Trying to make a scientific calculator GUI and get this type of error message for all numbers but '6'. 6 is my first pushbutton. Any assistance would be appreciated.

Undefined function or variable 'textString'.
Error in calc>pushbutton2_Callback (line 164) if(strcmp(textString,'0')==1)&(jj==0);
Error in gui_mainfcn (line 95) feval(varargin{:});
Error in calc (line 42) gui_mainfcn(gui_State, varargin{:});
Error in matlab.graphics.internal.figfile.FigFile/read>@(hObject,eventdata)calc('pushbutton2_Callback',hObject,eventdata,guidata(hObject)) Error while evaluating UIControl Callback

Answers (2)

Why do you think textString should be defined by the time it gets to that line of code? Did you call get() in that function to extract it from an edit field?
By the way, you should also use && instead of &, and you don't need ==1 when comparing to strcmp() since strcmp() returns a boolean.

3 Comments

I am doing this as a class assignment....I know absolutely nothing about writing code or proper syntax. I used code similar to 2 other versions of calculators I found online ( they both work). I copied the errors from my command box. I don't know what they mean or how to best solve the problem.
Does the callback function for push button 6 look any different than the functions for buttons 0-5 and 7-9?
No..I copy/pasted them all and changes the number/operation

Sign in to comment.

If you are trying to detect whether the pushbutton is pushed or not then
if get(hObject, 'Value') == 1
%pushbutton is pressed
end
Note: pushbutton callbacks are not normally called when the button is released, so unless you are doing something unusual, you can assume that the current button is pressed.

6 Comments

When I run the calculator and I only use '6', I can perform all my computations. If I use any other number, it fails to work and sets the above code.
We already established that the error is not on line 58, so it must be on line 57 instead. We know that because we are all psychic and can read your screen by using the secret MATLAB Z-Rays Toolbox.
Do you need the whole .m file? I am not trying to cause problems. I realize I'm in over my head..but its an assignment and our instructor wont help.( I think it's over his head too).
Attach your fig file and .m file with the paper clip icon.
I tried but I dont think its working. Or more than likely Im doing it wrong.
function varargout = calc(varargin)
% CALC MATLAB code for calc.fig
% CALC, by itself, creates a new CALC or raises the existing
% singleton*.
%
% H = CALC returns the handle to a new CALC or the handle to
% the existing singleton*.
%
% CALC('CALLBACK',hObject,eventData,handles,...) calls the local
% function named CALLBACK in CALC.M with the given input arguments.
%
% CALC('Property','Value',...) creates a new CALC or raises the
% existing singleton*. Starting from the left, property value pairs are
% applied to the GUI before calc_OpeningFcn gets called. An
% unrecognized property name or invalid value makes property application
% stop. All inputs are passed to calc_OpeningFcn via varargin.
%
% *See GUI Options on GUIDE's Tools menu. Choose "GUI allows only one
% instance to run (singleton)".
%
% See also: GUIDE, GUIDATA, GUIHANDLES
% Edit the above text to modify the response to help calc
% Last Modified by GUIDE v2.5 18-Oct-2015 21:54:31
% Begin initialization code - DO NOT EDIT
gui_Singleton = 1;
gui_State = struct('gui_Name', mfilename, ...
'gui_Singleton', gui_Singleton, ...
'gui_OpeningFcn', @calc_OpeningFcn, ...
'gui_OutputFcn', @calc_OutputFcn, ...
'gui_LayoutFcn', [] , ...
'gui_Callback', []);
if nargin && ischar(varargin{1})
gui_State.gui_Callback = str2func(varargin{1});
end
if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end
% End initialization code - DO NOT EDIT
% --- Executes just before calc is made visible.
function calc_OpeningFcn(hObject, eventdata, handles, varargin)
% This function has no output args, see OutputFcn.
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% varargin command line arguments to calc (see VARARGIN)
% Choose default command line output for calc
handles.output = hObject;
% Update handles structure
guidata(hObject, handles);
% UIWAIT makes calc wait for user response (see UIRESUME)
% uiwait(handles.figure1);
global jj
set(handles.text1,'String','0');
jj=0;
% --- Outputs from this function are returned to the command line.
function varargout = calc_OutputFcn(hObject, eventdata, handles)
% varargout cell array for returning output args (see VARARGOUT);
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Get default command line output from handles structure
varargout{1} = handles.output;
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
function edit1_Callback(hObject, eventdata, handles)
% hObject handle to edit1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of edit1 as text
% str2double(get(hObject,'String')) returns contents of edit1 as a double
% --- Executes during object creation, after setting all properties.
function edit1_CreateFcn(hObject, eventdata, handles)
% hObject handle to edit1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
% Hint: edit controls usually have a white background on Windows.
% See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','green');
end
% --- If Enable == 'on', executes on mouse press in 5 pixel border.
% --- Otherwise, executes on mouse press in 5 pixel border or over pushbutton1.
function pushbutton1_ButtonDownFcn(hObject, eventdata, handles)
% hObject handle to pushbutton1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% --- Executes during object creation, after setting all properties.
function text1_CreateFcn(hObject, eventdata, handles)
% hObject handle to text1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
function edit2_Callback(hObject, eventdata, handles)
% hObject handle to edit2 (see GCBO)
% Hints: get(hObject,'String') returns contents of edit2 as text
% str2double(get(hObject,'String')) returns contents of edit2 as a double
% --- Executes during object creation, after setting all properties.
function edit2_CreateFcn(hObject, eventdata, handles)
% hObject handle to edit2 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
% Hint: edit controls usually have a white background on Windows.
% See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
% --- Executes on button press in pushbutton1.
function pushbutton1_Callback(hObject,eventdata, handles)
% hObject handle to pushbutton1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
global jj
textString = get(handles.text1,'String');
if(strcmp(textString,'0')==1)&(jj==0);
set(handles.text1,'String','6') ;
else
textString =strcat(textString,'6');
set(handles.text1,'String',textString)
end
jj=0;
% --- Executes on button press in pushbutton2.
function pushbutton2_Callback(hObject,eventdata, handles)
% hObject handle to pushbutton2 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
global jj
textstring = get(handles.text1,'String');
if(strcmp(textString,'0')==1)&(jj==0);
set(handles.text1,'String','9') ;
else
textString =strcat(textString,'9');
set(handles.text1,'String',textString)
end
jj=0;
% --- Executes on button press in pushbutton3.
function pushbutton3_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton3 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% textString = get(handles.text1,'String');
%%if(strcmp(textString,'0')==1)
set(handle.text1,'String','0') ;
%%else
[a b c] = strread(textString,'%f %c %f');
clear ans;
switch b
case '*'
ans=a*c;
case '/'
if (c==0)
ans='Error Divide by zero';
else
ans=a/c;
end
case '-'
ans=a-c;
case '+'
ans=a+c;
case '^'
ans=a^c;
end
%ans =eval(textString);
%
%set(handles.text1,'textString,ans);
x=get(handles.text1, 'String');
x=eval(x);
set(handles.text1, 'String', x);
guidata(hObject,handles);
% --- Executes on button press in pushbutton4.
function pushbutton4_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton4 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
global jj
textstring = get(handles.text1,'String');
if(strcmp(textString,'0')==1)&(jj==0);
set(handles.text1,'String','(') ;
else
textString =strcat(textString,'(');
set(handles.text1,'String',textString)
end
jj=0;
% --- Executes on button press in pushbutton5.
function pushbutton5_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton5 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
globaljj
textstring = get(handles.text1,'String');
if(strcmp(textString,'0')==1)&(jj==0);
set(handles.text1,'String',')') ;
else
textString =strcat(textString,')');
set(handles.text1,'String',textString)
end
jj=0;
% --- Executes on button press in pushbutton6.
function pushbutton6_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton6 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
textString = get(handles.text1,'String');
textString =strcat(textString,'/');
set(handles.text1,'String',textString)
% --- Executes on button press in pushbutton7.
function pushbutton7_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton7 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
textString = get(handles.text1,'String');
textString =strcat(textString,'*');
set(handles.text1,'String',textString)
% --- Executes on button press in pushbutton8.
function pushbutton8_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton8 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
textString = get(handles.text1,'String');
textString =strcat(textString,'-');
set(handles.text1,'String',textString)
% --- Executes on button press in pushbutton9.
function pushbutton9_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton9 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
textString = get(handles.text1,'String');
textString =strcat(textString,'+');
set(handles.text1,'String',textString)
% --- Executes on button press in pushbutton10.
function pushbutton10_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton10 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
global jj
textString = get(handles.text1,'String');
if(strcmp(textString,'0.')==1)&(jj==0)
set(handles.text1,'String','0.') ;
else
ss=char(textString);
l=length(textString);
textString=ss(1:1-1);
set(handles.text1,'String',textString)
end
jj=0;
% --- Executes on button press in pushbutton16.
function pushbutton16_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton16 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
global jj
textstring = get(handles.text1,'String');
if(strcmp(textString,'0')==1)&(jj==0);
set(handles.text1,'String','3') ;
else
textString =strcat(textString,'3');
set(handles.text1,'String',textString)
end
jj=0;
% --- Executes on button press in pushbutton17.
function pushbutton17_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton17 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
global jj
textstring = get(handles.text1,'String');
if(strcmp(textString,'0')==1)&(jj==0);
set(handles.text1,'String','2') ;
else
textString =strcat(textString,'2');
set(handles.text1,'String',textString)
end
jj=0;
% --- Executes on button press in pushbutton18.
function pushbutton18_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton18 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
global jj
textstring = get(handles.text1,'String');
if(strcmp(textString,'0')==1)&(jj==0);
set(handles.text1,'String','5') ;
else
textString =strcat(textString,'5');
set(handles.text1,'String',textString)
end
jj=0;
% --- Executes on button press in pushbutton20.
function pushbutton20_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton20 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
global jj
textString = get(handles.text1,'String');
if(strcmp(textString,'0.')==1)&(jj==0)
set(handles.text1,'String','0.') ;
else
ss=char(textString);
l=length(textString);
textString=ss(1:1-1);
set(handles.text1,'String',textString)
end
jj=0;
% --- Executes on button press in pushbutton21.
function pushbutton21_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton21 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
global jj
textstring = get(handles.text1,'String');
if(strcmp(textString,'0')==1)&(jj==0);
set(handles.text1,'String','1') ;
else
textString =strcat(textString,'1');
set(handles.text1,'String',textString)
end
jj=0;
% --- Executes on button press in pushbutton22.
function pushbutton22_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton22 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
global jj
textstring = get(handles.text1,'String');
if(strcmp(textString,'0')==1)&(jj==0);
set(handles.text1,'String','.') ;
else
textString =strcat(textString,'.');
set(handles.text1,'String',textString)
end
jj=0;
% --- Executes on button press in pushbutton23.
function pushbutton23_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton23 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
global jj
textstring = get(handles.text1,'String');
if(strcmp(textString,'0')==1)&(jj==0);
set(handles.text1,'String','0') ;
else
textString =strcat(textString,'0');
set(handles.text1,'String',textString)
end
jj=0;
% --- Executes on button press in pushbutton24.
function pushbutton24_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton24 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
global jj
textstring = get(handles.text1,'String');
if(strcmp(textString,'0')==1)&(jj==0);
set(handles.text1,'String','factorial') ;
else
textString =strcat(textString,'factorial');
set(handles.text1,'String',textString)
end
jj=0;
% --- Executes on button press in pushbutton25.
function pushbutton25_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton25 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
global jj
textstring = get(handles.text1,'String');
if(strcmp(textString,'0')==1)&(jj==0);
set(handles.text1,'String','4') ;
else
textString =strcat(textString,'4');
set(handles.text1,'String',textString)
end
jj=0;
% --- Executes on button press in pushbutton26.
function pushbutton26_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton26 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
global jj
textstring = get(handles.text1,'String');
if(strcmp(textString,'0')==1)&(jj==0);
set(handles.text1,'String','log') ;
else
textString =strcat(textString,'log');
set(handles.text1,'String',textString)
end
jj=0;
% --- Executes on button press in pushbutton27.
function pushbutton27_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton27 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
global jj
textstring = get(handles.text1,'String');
if(strcmp(textString,'0')==1)&(jj==0);
set(handles.text1,'String','7') ;
else
textString =strcat(textString,'7');
set(handles.text1,'String',textString)
end
jj=0;
% --- Executes on button press in pushbutton28.
function pushbutton28_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton28 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
global jj
textstring = get(handles.text1,'String');
if(strcmp(textString,'0')==1)&(jj==0);
set(handles.text1,'String','tand') ;
else
textString =strcat(textString,'tand');
set(handles.text1,'String',textString)
end
jj=0;
% --- Executes on button press in pushbutton29.
function pushbutton29_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton29 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
global jj
textstring = get(handles.text1,'String');
if(strcmp(textString,'0')==1)&(jj==0);
set(handles.text1,'String','cosd') ;
else
textString =strcat(textString,'cosd');
set(handles.text1,'String',textString)
end
jj=0;
% --- Executes on button press in pushbutton34.
function pushbutton34_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton34 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
global jj
textstring = get(handles.text1,'String');
if(strcmp(textString,'0')==1)&(jj==0);
set(handles.text1,'String','log10') ;
else
textString =strcat(textString,'log10');
set(handles.text1,'String',textString)
end
jj=0;
% --- Executes on button press in pushbutton35.
function pushbutton35_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton35 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
global jj
textstring = get(handles.text1,'String');
if(strcmp(textString,'0')==1)&(jj==0);
set(handles.text1,'String','tan') ;
else
textString =strcat(textString,'tan');
set(handles.text1,'String',textString)
end
jj=0;
% --- Executes on button press in pushbutton36.
function pushbutton36_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton36 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
global jj
textstring = get(handles.text1,'String');
if(strcmp(textString,'0')==1)&(jj==0);
set(handles.text1,'String','cos') ;
else
textString =strcat(textString,'cos');
set(handles.text1,'String',textString)
end
jj=0;
% --- Executes on button press in pushbutton37.
function pushbutton37_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton37 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
global jj
textstring = get(handles.text1,'String');
if(strcmp(textString,'0')==1)&(jj==0);
set(handles.text1,'String','sin') ;
else
textString =strcat(textString,'sin');
set(handles.text1,'String',textString)
end
jj=0;
% --- Executes on button press in pushbutton43.
function pushbutton43_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton43 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
textString = get(handles.text1,'String');
textString =strcat(textString,'^');
set(handles.text1,'String',textString)
% --- Executes on button press in pushbutton46.
function pushbutton46_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton46 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
global jj
textstring = get(handles.text1,'String');
if(strcmp(textString,'0')==1)&(jj==0);
set(handles.text1,'String','sind') ;
else
textString =strcat(textString,'sind');
set(handles.text1,'String',textString)
end
jj=0;
% --- Executes on button press in pushbutton51.
function pushbutton51_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton51 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
global jj
textstring = get(handles.text1,'String');
if(strcmp(textString,'0')==1)&(jj==0);
set(handles.text1,'String','8') ;
else
textString =strcat(textString,'8');
set(handles.text1,'String',textString)
end
jj=0;

Sign in to comment.

Tags

Asked:

on 19 Oct 2015

Edited:

on 20 Oct 2015

Community Treasure Hunt

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

Start Hunting!