|
That’s easier said than done…
I’ve done a lot of research on recursion but it is all very confusing to me.
|
|
|
|
|
|
I found that in my seach for a solution and I couldn't get a good enough grasp on it to make it do what I need to do.
I need to to search the directories, and each time it finds a *.config file, perform an action.
..any suggestions?
Thanks
Brad
|
|
|
|
|
Here's my suggestion...since I'm not too sure what you have to do with the config file, but if you are running the same action on each config file. Perhaps you may want to store the path or FileInfo of all files found in an ArrayList and then parse the list and perform the "action" on each file. I'm not sure if this would slow down your performance or not, but I find it cleaner than interrupting the recursive search.
I'm actually debating whether or not to do something similar right now, as I am performing a search through a TreeView and locating each TreeNode that contains a substring of text than performing an action.
|
|
|
|
|
Ignore what I just said, I reviewed the code from that link a little closer and you don't have to store the files found in an ArrayList. The recursive search does it for you already. Use the code as is and all you have to do is something like the following:
<br />
'Perhaps in a button event<br />
<br />
Dim x As New FileSearch(New IO.DirectoryInfo("C:\"), "*.config")<br />
<br />
'find all config files<br />
<br />
x.Search()<br />
<br />
'you should have all files that match "*.config" in C:\<br />
'the FileSearch class contains a public ArrayList Files<br />
'traverse the ArrayList and perform the action on the config file<br />
'for example:<br />
<br />
'go through each config file <br />
For Each obj as Object in x.Files<br />
<br />
<br />
If obj.GetType() is GetType(FileInfo) Then<br />
<br />
'So why FileInfo? Because in the code provided on that forum<br />
'the author used the DirectoryInfo.GetFiles() function which<br />
'returns an array of FileInfo objects<br />
'2nd line of DoSearch()) - _Files.AddRange(BaseDirectory.GetFiles(_FileMask))<br />
<br />
'perform cast<br />
Dim f as FileInfo = CType(obj, FileInfo)<br />
'now perform the action on the file<br />
<br />
PerformAction(f)<br />
End If<br />
'keep going until all config files have been handled<br />
Next<br />
You can however modify the author's code to make the Files ArrayList into an array of FileInfo objects which will all you to skip the casting and perform your "action" on the config file.
I hope this make sense?
|
|
|
|
|
Anonymous wrote:
Dim x As New FileSearch(New IO.DirectoryInfo("C:\"), "*.config")
I'm getting an error saying that 'FileSearch' is not defined. Shouldn't that be defined in IO.DirectoryInfo?
|
|
|
|
|
|
Now I see...that makes perfect sense. Thanks.
|
|
|
|
|
I like that idea...I'm going to try that route because recursion is just not working for me.
Thanks
|
|
|
|
|
By all means, solve your problem, but recursion is a common concept that you really should learn to wrap your head around. It's not really that complex, you just need to do a little reading so that the penny drops.
Christian Graus - Microsoft MVP - C++
|
|
|
|
|
Christian Graus wrote:
you just need to do a little reading so that the penny drops.
Yup. I think after working my way through this problem I should have an easy time understaing the theory behind it all.
I'm acctually back to the recusion method and it seems to be working out for me...so far.
Thanks for your input.
|
|
|
|
|
I'm a relative newbie to Vb.net...well, programming in general. I'm trying to populate a treeview control with Parent and child nodes that are stored in seperate databases. The databases are linked by an autonumbered ID field.
Can someone steer me in the right direction as far as calling the nodes from the database to populate the treeview when the form is loaded? I would think this is possible but right now I'm a bit clueless...I appreciate any help or direction anyone has to offer.
Sorry if this is vague, if you need more information, please let me know.
|
|
|
|
|
|
Hello,
I am working on a application where I am requesting web pages using
AxWebBrowser1.Navigate2("-URL-")
Also the servers I send request Uses Cookies.
Now In my application I want the cookies to be supported but I dont want to Handle the cookies externally(Through some code). I want it just like the IE does when we browse a web page through IE
Any help will be Greatly thanked.
Actually I am working on my Final Year College Project. And need this thing Desprately.
|
|
|
|
|
Can any body tell me how I would trim ‘TestAirplane’ out of the string below?
C:\Targets\TestAirplane\TestAirplane_WebDoc\TestAirplane_HDS\01 Fuse
The only constants are the slashes “\” and the word “Targets”
I know that I want to find “Targets\” and trim it and everything to the left and then find the next slash”\” and trim it and everything to the right...just can’t figure out how to do it.
Thanks
Brad
|
|
|
|
|
You could use the String.Split command, but thats only if you know for sure that the desired String in the returned array is the 2nd last element.
Dim path as String = "C:\Targets\TestAirplane\TestAirplane_WebDoc\TestAirplane_HDS\01 Fuse"<br />
<br />
Dim s as String()<br />
<br />
s = path.Split(chr(92))<br />
<br />
return s(s.Length-2)
OR
if you place in a FileInfo object you can call the FileInfo.Directory.Parent method which will return the local directory of where the file is located.
Dim f as new FileInfo("C:\Targets\TestAirplane\TestAirplane_WebDoc\TestAirplane_HDS\01 Fuse")<br />
<br />
'should return TestAirplane_HDS<br />
return f.Directory.Parent.ToString
|
|
|
|
|
Anonymous wrote:
s = path.Split(chr(92))
That works good but I don't understand what (chr(92)) is doing. Specifically, what is the 92 for?
Thanks
Brad
|
|
|
|
|
Brad Fackrell wrote:
what is the 92 for?
Thats the ASCII key code for \
For more info at those key codes, you can check ASCII Character Codes[^].
BTW, if you want to be really fancy, you can use the IO.Path.DirectorySeparatorChar instead...
Hope this could help you!
|
|
|
|
|
Absofukinlutely wrote:
Thats the ASCII key code for \
Ahhh...I see. Thank you very much.
|
|
|
|
|
I'd suggest that chr(92) is a complete hack. I certainly wouldn't use it.
Christian Graus - Microsoft MVP - C++
|
|
|
|
|
How would you tackle this one?
|
|
|
|
|
Anonymous wrote:
How would you tackle this one?
How would one tackle what
|
|
|
|
|
With the \ in quotes. \ is used to escape things, so you probably need to do Split('\\') instead of Split('\').
Christian Graus - Microsoft MVP - C++
|
|
|
|
|
Oh ok, is that also in VB? I thought that escaping with \ was only in C, C++ and C#.
I never had any problems with it...
|
|
|
|
|
I dunno, but I can't imagine why else someone would use chr(92) or whatever it was.
How do you put a control character in a string in VB then ?
Christian Graus - Microsoft MVP - C++
|
|
|
|