Reference to non-existent field 'output' Error

1 vue (au cours des 30 derniers jours)
Cross
Cross le 20 Juin 2019
Commenté : Matt J le 20 Juin 2019
Hello,
I'm afraid I can't find my mistake. The program is without problems so far and now I get the following error when starting the program:
Reference to non-existent field 'output'.
Error in Spiel>Spiel_OutputFcn (line 46)
varargout{1} = handles.output;
Error in gui_mainfcn (line 264)
feval(gui_State.gui_OutputFcn, gui_hFigure, [], gui_Handles);
Error in Spiel (line 16)
gui_mainfcn(gui_State, varargin{:});
My programming skills are not good, but it should be understandable ;)
function varargout = Spiel(varargin)
gui_Singleton = 1;
gui_State = struct('gui_Name', mfilename, ...
'gui_Singleton', gui_Singleton, ...
'gui_OpeningFcn', @Spiel_OpeningFcn, ...
'gui_OutputFcn', @Spiel_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
function Spiel_OpeningFcn(hObject, ~, handles)
handles.Flag = 0;
handles.Flag2 = 0;
handles.Plotsize=0.0015;
handles.Database = load('Database.mat');
handles.Logo = imread('Logo.png');
handles.Logo_small = imread('Logo_small.png');
handles.Correct.Right = 0;
handles.Correct.Count = 0;
handles.Correct.Percent = 0;
axes(handles.Plot_small)
imshow(handles.Logo_small)
axes(handles.Plot)
set(handles.Plot,'visible','off');
imshow(handles.Logo)
% Update handles structure
guidata(hObject, handles);
function varargout = Spiel_OutputFcn(~,~, handles)
varargout{1} = handles.output;
function B_New_Callback(hObject, ~, handles)
Stadtteil = 0;
handles.Flag = 1;
handles.Flag2 = 0;
set(handles.B_Solution,'BackgroundColor',[0.94 0.94 0.94]);
set(handles.B_Solution, 'string', 'Lösung anzeigen');
% reset plot window
axes(handles.Plot)
cla('reset')
imshow(handles.Logo)
while Stadtteil == 0
StadtteilR = randi(5);
if get(eval(['handles.C_' num2str(StadtteilR)]), 'Value') == 1
Stadtteil = StadtteilR;
end
end
switch Stadtteil
case 1
handles.Stadtteilname = 'Kernstadt';
case 2
handles.Stadtteilname = 'Heilsberg';
case 3
handles.Stadtteilname = 'Massenheim';
case 4
handles.Stadtteilname = 'Dortelweil';
case 5
handles.Stadtteilname = 'Gronau';
end
handles.Strasse = randi(length(eval(['handles.Database.' handles.Stadtteilname '.Street'])));
set(handles.T_Street, 'String', eval(['handles.Database.' handles.Stadtteilname '.Street(' num2str(handles.Strasse) ')']))
guidata(hObject, handles);
function B_Solution_Callback(hObject, ~ , handles)
set(hObject, 'UserData', true);
if handles.Flag == 0
return
end
handles.Flag2 = 1;
handles.Correct.Count = handles.Correct.Count + 1;
if strcmp(handles.Stadtteilname, handles.SelectStadtteil) == 1
set(handles.B_Solution,'BackgroundColor','green');
set(handles.B_Solution, 'string', 'Richtig!');
handles.Correct.Right = handles.Correct.Right + 1;
else
set(handles.B_Solution,'BackgroundColor','red');
set(handles.B_Solution, 'string', ['Falsch, richtig ist ' handles.Stadtteilname]);
end
handles.lon = eval(['handles.Database.' handles.Stadtteilname '.lon(' num2str(handles.Strasse) ')']);
handles.lat = eval(['handles.Database.' handles.Stadtteilname '.lat(' num2str(handles.Strasse) ')']);
guidata(hObject, handles);
Plotting(handles)
Lights(hObject,handles)
function Lights(hObject,handles)
handles.Correct.Percent = handles.Correct.Right / handles.Correct.Count;
if handles.Correct.Percent > 0.8
set(handles.T_Lights, 'BackgroundColor',[0 1 0])
elseif handles.Correct.Percent > 0.4
set(handles.T_Lights, 'BackgroundColor',[1 1 0])
else
set(handles.T_Lights, 'BackgroundColor',[1 0 0])
end
set(handles.T_Lights, 'string', sprintf('%d %% ', round(handles.Correct.Percent*100,0)));
guidata(hObject,handles);
function Plotting(handles)
plot(handles.lon, handles.lat, '.r', 'MarkerSize', 20)
set(handles.Plot,'visible','off');
handles.Plot = Map([handles.lon-(handles.Plotsize*1.57) handles.lon+(handles.Plotsize*1.57) handles.lat-handles.Plotsize handles.lat+handles.Plotsize]);
handles.Flag2 = 1;
function R_1_Callback(hObject, ~, handles)
handles.SelectStadtteil = 'Kernstadt';
guidata(hObject, handles);
function R_2_Callback(hObject, ~, handles)
handles.SelectStadtteil = 'Heilsberg';
guidata(hObject, handles);
function R_3_Callback(hObject, ~, handles)
handles.SelectStadtteil = 'Massenheim';
guidata(hObject, handles);
function R_4_Callback(hObject, ~, handles)
handles.SelectStadtteil = 'Dortelweil';
guidata(hObject, handles);
function R_5_Callback(hObject, ~, handles)
handles.SelectStadtteil = 'Gronau';
guidata(hObject, handles);
function C_1_Callback(~, ~, ~)
function C_2_Callback(~, ~, ~)
function C_3_Callback(~, ~, ~)
function C_5_Callback(~, ~, ~)
function C_4_Callback(~, ~, ~)

Réponse acceptée

Matt J
Matt J le 20 Juin 2019
I don't see where you've created handles.output. So, no wonder Matlab complains that it can't find it.
  2 commentaires
Cross
Cross le 20 Juin 2019
Modifié(e) : Cross le 20 Juin 2019
I didn't write this function, it was created automatically. Where do I have to insert which code?
I am still a newbie
Matt J
Matt J le 20 Juin 2019
If you don't care what output the GUI returns, you can just change the OutputFcn to return something arbitrary,
function varargout = Spiel_OutputFcn(~,~, handles)
varargout{1} = [];
end

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Interactive Control and Callbacks dans Help Center et File Exchange

Tags

Produits


Version

R2019a

Community Treasure Hunt

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

Start Hunting!

Translated by