Undefined operator '*' for input arguments of type 'matlab.ui​.control.U​IControl'.

7 次查看(过去 30 天)
The following function is giving an error,
function tf = GUI_ListBoxAdd(vH, bUni, vStr, vID);
% Add an entry to a GUI list box.
%
% Sucess = GUI_ListBoxAdd(HandleTagName, Unique, String, Number)
% Sucess = GUI_ListBoxAdd([], Unique, String, Number)
%
% If Unique is 1 and String is already in the list, then this
% function will not add another copy of the item. If Number
% is not specified it will be set to the numerical value of
% the string, or 0. String can be a cell matrix containing
% a string list or a list box matrix. Number can be a vector
% containing numbers associated with a string list. A non-GUI
% list box matrix is a cell matrix that is not associated
% a GUI list box object.
%
% If HandleTagName is not specified (empty) then a non-GUI
% list box matrix will be created; call the GUI_ListBoxCopy()
% function to access it.
%
% Call the GUI_ListBoxClear() function when the list box is
% no longer required.
%
% See also GUI_GetID.
% Intialize for fail case!
tf = 0;
if isempty(vH)
sGlobal = 'GUI_ListBox';
else
hObj = GUI_GetID(vH);
if hObj == 0;
return;
end;
aaa = hObj * 1e7;
sGlobal = sprintf('GUI_ListBox_%012ld', Trunc(aaa));
end
try
vID = vID;
bSet = 1;
catch
vID = NaN;
bSet = 0;
dID = NaN;
end
% If a message box cell matrix is passed then
% set vID with the numeric part.
[iStrR iStrC] = size(vStr);
if iscell(vStr);
if iStrC > 1;
bSet = 1;
vID = zeros(1, iStrR);
for iSub = 1 : iStrR;
vID(iSub) = vStr{iSub, 2};
end;
end;
else;
vStr = {vStr};
end;
% If vID has been specified, it must have the same
% length (rows) as vStr.
iLenID = length(vID);
if bSet & (iStrR ~= iLenID)
return;
end
eval(sprintf('global %s;', sGlobal));
eval(sprintf('vTmp = %s;', sGlobal));
% If bUni is true then check for repeated values before adding
for iInSub = 1 : iStrR;
sStr = vStr{iInSub, 1};
if bSet;
dID = vID(iInSub);
end;
[iLen iNull] = size(vTmp);
if iLen < 1;
iSub = 1;
else;
if bUni == 1;
% If not found then add the unique value
if FindInStrList(sStr, vTmp(:, 1)) == 0;
iSub = iLen + 1;
else;
iSub = 0;
end;
else;
iSub = iLen + 1;
end;
end;
if iSub > 0;
vTmp{iSub, 1} = sStr;
if bSet;
vTmp{iSub, 2} = dID;
else;
vTmp{iSub, 2} = atof(sStr);
end;
tf = 1;
end;
end;
% Set the listbox with the new list
eval(sprintf('%s = vTmp;', sGlobal));
if ~isempty(vH);
%set(handles.listbox1, 'String', prev_str, 'Value', length(prev_str));
set(hObj, 'String', vTmp(:, 1),'Value', length(vTmp(:, 1)));
end;
Error
Undefined operator '*' for input arguments of type 'matlab.ui.control.UIControl'.
Error in GUI_ListBoxAdd (line 37)
aaa = hObj * 1e7;
Error in Scratch>pushDet_Callback (line 258)
Error in gui_mainfcn (line 95)
feval(varargin{:});
Error in Scratch (line 17)
gui_mainfcn(gui_State, varargin{:});
Error while evaluating UIControl Callback

采纳的回答

Walter Roberson
Walter Roberson 2017-9-29
Change
aaa = hObj * 1e7;
to
aaa = double(hObj) * 1e7;

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Migrate GUIDE Apps 的更多信息

标签

Community Treasure Hunt

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

Start Hunting!

Translated by