필터 지우기
필터 지우기

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

조회 수: 2 (최근 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에서 String Parsing에 대해 자세히 알아보기

태그

Community Treasure Hunt

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

Start Hunting!

Translated by