Reference to non-existent field 'output' Error

3 visualizzazioni (ultimi 30 giorni)
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(~, ~, ~)

Risposta accettata

Matt J
Matt J il 20 Giu 2019
I don't see where you've created handles.output. So, no wonder Matlab complains that it can't find it.
  2 Commenti
Cross
Cross il 20 Giu 2019
Modificato: Cross il 20 Giu 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 il 20 Giu 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

Accedi per commentare.

Più risposte (0)

Categorie

Scopri di più su Interactive Control and Callbacks in Help Center e File Exchange

Prodotti


Release

R2019a

Community Treasure Hunt

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

Start Hunting!

Translated by