Problem
Es soll durch alle Module eines Ordners / Folders und deren Unterordner / Subfolders iteriert werden.
All modules of a folder in a project (not the project itself) shall be iterated:
Ansatz – Approach
Das Skript aus dem vorherigen Artikel „Iterate all modules“ wird um eine Rekursion erweitert
The script „Iterate all modules…“ will be extended with a recursive call.
Solution – Lösung
string startFolder="/Project/Folder/"; int moduleCount=0; void forAllModulesInFolder(Folder f) { Item itemRef; string shType; string sItemNameFull; string sItemName; Module moduleReference; for itemRef in f do { shType = type(itemRef); print shType "\t"; sItemNameFull = fullName(itemRef); print sItemNameFull "\t"; sItemName = name(itemRef); print sItemName "\n"; if(shType=="Folder") { string selectedFolder = sItemNameFull; Folder f=folder selectedFolder; forAllModulesInFolder(f); } if(shType=="Formal") { moduleReference = read(sItemNameFull,false,true); filtering off; // do s.th. with the moduleReference close(moduleReference); moduleCount++; } } // Main-Method void main(void) { string selectedFolder = startFolder; Folder f=folder selectedFolder; forAllModulesInFolder(f); print "Affected Modules: " moduleCount "\n"; } main();
Für das ganze Projekt siehe auch…
For the whole project also see…
Hallo Blörn,
das Skript ist zwar schon alt, aber falls doch noch mal jemand anderes auf die Seite stößt, noch eine kleine Fehlerkorrektur:
In der Funktion „forAllModulesInFolder“ fehlt eine abschließende Klammer für die „for“ Schleife oder den Test „if(shType==“Formal“)“, je nachdem wie Du es sehen willst. 😉
Grüße,
Matthias