static void KlForLoopFoldersSystemIO(Args _args)
{
int k; // counter for result loop
container dirs; // container for result
filePath path = @"C:\temp"; // input path
container getDirectories(str _dir, boolean _inclSubDirs = true)
{
container dList; // container to cast array into
int i; // counter for array loop
System.Array directories; // array for result from .NET call
#Define.Pattern("*") // input pattern: * = all
;
// assert interoppermissions for .NET interop
new InteropPermission(InteropKind::ClrInterop).assert();
// get directories using .NET interop
if(_inclSubDirs)
{
// include subdirectories
directories = System.IO.Directory::GetDirectories(_dir, #Pattern, System.IO.SearchOption::AllDirectories);
}
else
{
// only top directory
directories = System.IO.Directory::GetDirectories(_dir, #Pattern, System.IO.SearchOption::TopDirectoryOnly);
}
// loog .NET array and put the values in a container for easier use in x++
for( i=0;i<ClrInterop::getAnyTypeForObject(directories.get_Length()); i++ )
{
dList = conins(dList, conlen(dList)+1, ClrInterop::getAnyTypeForObject(directories.GetValue(i)));
}
// revert assertion to prevent multiple calls to the assert() method
CodeAccessPermission::revertAssert();
// return result container
return dList;
}
;
// get directories
dirs = getDirectories(path);
// use optional parameter to disable sub directories
// dirs = getDirectories(path, false);
// print the result
for(k=1;k<= conlen(dirs); k++)
{
// print the result to screen
info(conpeek(dirs, k));
}
// we're done
info("done");
}
{
int k; // counter for result loop
container dirs; // container for result
filePath path = @"C:\temp"; // input path
container getDirectories(str _dir, boolean _inclSubDirs = true)
{
container dList; // container to cast array into
int i; // counter for array loop
System.Array directories; // array for result from .NET call
#Define.Pattern("*") // input pattern: * = all
;
// assert interoppermissions for .NET interop
new InteropPermission(InteropKind::ClrInterop).assert();
// get directories using .NET interop
if(_inclSubDirs)
{
// include subdirectories
directories = System.IO.Directory::GetDirectories(_dir, #Pattern, System.IO.SearchOption::AllDirectories);
}
else
{
// only top directory
directories = System.IO.Directory::GetDirectories(_dir, #Pattern, System.IO.SearchOption::TopDirectoryOnly);
}
// loog .NET array and put the values in a container for easier use in x++
for( i=0;i<ClrInterop::getAnyTypeForObject(directories.get_Length()); i++ )
{
dList = conins(dList, conlen(dList)+1, ClrInterop::getAnyTypeForObject(directories.GetValue(i)));
}
// revert assertion to prevent multiple calls to the assert() method
CodeAccessPermission::revertAssert();
// return result container
return dList;
}
;
// get directories
dirs = getDirectories(path);
// use optional parameter to disable sub directories
// dirs = getDirectories(path, false);
// print the result
for(k=1;k<= conlen(dirs); k++)
{
// print the result to screen
info(conpeek(dirs, k));
}
// we're done
info("done");
}