Get list of midi files
-
-
replace works on strings, fileList is an array so no replace function there. You'd need to loop through your array of objects and run replace on each one.
-
@d-healey here's my attempt:
//hold file list var fileList = []; const var formattedNames = []; const var Browse = Content.getComponent("Browse"); inline function onBrowseControl(component, value) { if(value) //if button clicked { //open file broswer FileSystem.browseForDirectory("", function(dir) { //push midi list into array fileList = FileSystem.findFiles(dir, "*.mid", false); for (i = 0; i < fileList.length; i++) { var newName = fileList[i]; newName = newName.replace("File: ", ""); formattedNames.push(newName); } }); } }; Content.getComponent("Browse").setControlCallback(onBrowseControl);
getting this error:
function not found at newName = newName.replace("File: ", "");
-
filelist is an array of objects. So filelist[i] is an object not a string. Try
Console.print(trace(filelist[i]));
to see what is contained within your object. -
@d-healey said in Get list of midi files:
Console.print(trace(filelist[i]));
It returns
Interface: undefined
-
@dustbro If you're going to copy and paste things that I write you should check that I've written it correctly ;) Your variable is called fileList, not filelist.
-
@d-healey said in Get list of midi files:
fileList
I've been sitting at the computer for 13 hours... maybe I need a break.
Now that I'm using variables that actually exist in my project, it returns empty:
Interface:
Also, thanks for the help.
-
What do you get with
Console.print(fileList.length);
? -
@d-healey 15, which is the amount of files in my test folder
-
Try this in place of your loop
for (f in fileList) { Console.print(f.toString(File.FullPath)); }
I also notice you're using some
vars
, always uselocal
in inline functions, and in on init use reg or const. 99% of the timevar
should not be used except in paint routines, mouse callbacks, timer callbacks, and occasionally a few other places. -
@d-healey said in Get list of midi files:
Try this in place of your loop
Now we're talking! that returns the file path correctly
-
@dustbro Yeah it's late here :) the objects in your array are all file objects so you have access to all of the File class functions, like
toString()
-
@d-healey said in Get list of midi files:
99% of the time var should not be used
Thanks for this advice as well.