Перебор содержимого папки в X++
			Запись от Kabardian размещена 28.02.2012 в 12:08
			
		
		
		
		Нашел замечательную статью, где описано как с помощью WinAPI из X++ перебрать содержимое папки.
		
	X++:
static void FindFile(Args _args) { #File FileName fullFileName(FileName _path, FileName _fileName) { FileName pathName; FileName fileName; FileName fileExtension; ; [pathName,fileName,fileExtension] = fileNameSplit(_fileName); return _path + '\\' + fileName + fileExtension; } void findFiles(FileName _path, FileName _fileName, boolean _inclSubDir = true, FileName _prefix = fullFileName(_path,_fileName)) { FileName fileName; int hdl; ; setprefix(_prefix); if (WinAPI::folderExists(_path)) { [hdl,fileName] = WinApi::findFirstFile(fullFileName(_path,_fileName)); while (fileName) { if (WinAPI::fileExists(fullFileName(_path,fileName))) info(fileName); fileName = WinApi::findNextFile(hdl); } WinApi::findClose(hdl); if (_inclSubDir) { [hdl, fileName] = WinAPI::findFirstFile(_path+'\\'+#AllFiles); while (fileName) { if (strlwr(fileName) != strlwr(_fileName) && strlwr(fileName) != strlwr('.') && strlwr(fileName) != strlwr('..') && WinAPI::pathExists(fullFileName(_path,fileName)) ) findFiles(fullFileName(_path,fileName), _fileName, _inclSubDir, fileName); fileName = WinApi::findNextFile(hdl); } WinApi::findClose(hdl); } } } findFiles('c:\\Program Files','*.doc'); }
Всего комментариев 3
	
	Комментарии
- 
	
		Нашел лаконичный код для тех же целей, в предыдущем обнаружился баг — чтобы файлы нашлись нужно обязательно указывать расширение.
X++:static void showFileName(Args _args) { int handle; FilePath filePath; FileName FileName; ; filepath = "c:\\windows"; [handle,filename] = WinAPI::findFirstFile(filepath + "\\*.*"); while (filename != "") { info(filepath + "\\" + filename); filename = WinAPI::findNextFile(handle); } WinAPI::findClose(handle); }
Запись от Kabardian размещена 28.02.2012 в 12:33 
					
				
				
		 - 
	
		см. также System.IO.Directory.GetFiles()Запись от gl00mie размещена 28.02.2012 в 20:47 
					
				
				
		 - 
	
		Только при использовании нужно учесть, что данный при вызове при пакетных обработках вызывает ошибку
"сеанс попытался вызвать метод, который доступен только на клиенте."Запись от AlGol размещена 05.11.2013 в 17:30 
					
				
				
					
Обновил(-а) AlGol 05.11.2013 в 19:08 



					
				
				
		