I get these errors when I run this code and need help finding a solution.
9 ビュー (過去 30 日間)
古いコメントを表示
Hello, the code below is supposed to display a selected folder in a graphical tree and then open its subfolders and files. However, when I run it, it gives me the following errors related to dir and callback function:
Error using dir
Function is not defined for 'matlab.ui.container.TreeNode' inputs.
Error in mytreeapp/nodechange (line 14)
files=dir(node);
Error using matlab.ui.control.internal.controller.ComponentController/executeUserCallback (line 352)
Error while evaluating Tree PrivateSelectionChangedFcn.
The input of dir needs to be a string so i tried converting the root using char but I got this error:
Error using char
Conversion to char from matlab.ui.container.TreeNode is not possible.
I would appreciate it if someone can help me find a solution to these errors.
f=uifigure; % Figure
t=uitree(f, 'Position', [20 20 150 150]); %Tree
t.SelectionChangedFcn=@nodechange;
%Select the folder using uigetdir and set it as the root node of the tree
root=uitreenode(t, 'Text', uigetdir);
%Callback function when node is selected
function nodechange (t, eventdata, handles)
node=eventdata.SelectedNodes;
% Get a list of all files and folders in this folder.
files=dir(node);
%Get a logical vector that tells which is a directory
dirFlags=[files.isdir];
%Extract only those that are directories
subFolders=files(dirFlags);
%Loop to display every subfolder as a node
for k=1: length (subFolders);
FolderName=subFolders(k).name;
nodes(k)=uitreenode(t, 'Text', FolderName);
end
end
Thank you.
2 件のコメント
TADA
2019 年 1 月 8 日
UI controls are not convertible to strings
but the tree node should have a property with the string you need
I'm guessing it's Text, but you should have a look at the documentation
採用された回答
TADA
2019 年 1 月 9 日
Yes the uitreenode property is set to Text
by that do you mean this line of code?
nodes(k)=uitreenode(t, 'Text', FolderName);
If you ment this line, it sets the text of the tree node to be the folder name
Your problem is here:
files=dir(node);
where you send the tree node as an argument to dir function, while dir expects a character array, hence the error.
what you need to do is this:
files=dir(node.Text);
after that you will still have some more issues of setting the callbacks of the new nodes, duplication of the tree when reselecting a folder both of which you don't handle in the callback function
6 件のコメント
その他の回答 (0 件)
参考
カテゴリ
Help Center および File Exchange で File Operations についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!