2011/7/1 nando <nand...@nothingsimple.com>: > In a true multi-user multi-tasking environment the following is good > except it is missing one thing: > The TRY must be added because during the IF test and the MKDIR, > it might have been created. This makes it the list error prone. > > > > Private Sub CreateNewOutputFolder(psFolderSpecification As String) > Dim sFolderSpec As String > > sFolderSpec = File.Path(psFolderSpecification) > > If Exist(sFolderSpec) Then > 'ok, do nothing > Else > TRY Mkdir sFolderSpec <------TRY ADDED HERE > End if > > End > > > And, the whole above can simply be just one line: > > Private Sub CreateNewOutputFolder(psFolderSpecification As String) > > TRY MKDIR File.Path(psFolderSpecification) > > End
well in a not known world maybe :) but not here for two reason : first it's file.dir then when the parent dir is created ... we need to create the child one ... where are you do that ? With your algorithm you will create just one directory ... the first that can be done ... there is nothing for the suite. > -Fernando > > > > > > ---------- Original Message ----------- > From: Rolf-Werner Eilert <eilert-sprac...@t-online.de> > To: gambas-user@lists.sourceforge.net > Sent: Fri, 01 Jul 2011 10:21:31 +0200 > Subject: Re: [Gambas-user] Try Catch fail when using mkdir.... > >> Hi Stephen, >> >> my first thought was that it might be If Not Exist... I had such a case >> some time ago, and it did not react as expected. Just check if it really >> reports TRUE if the directory isn't there. (I remember Benoit explained >> why it didn't run correctly in my case, maybe you find the thread in the >> archives.) >> >> Then I thought why do you use an error condition when you could simply >> look for the directory and decide whatever when it exists or not? Why >> going recursively at all? And you could use File.Path to ensure the the >> psFolderSpecification is cut to its correct part. >> >> Private Sub CreateNewOutputFolder(psFolderSpecification As String) >> Dim sFolderSpec As String >> >> sFolderSpec = File.Path(psFolderSpecification) >> >> If Exist(sFolderSpec) Then >> 'ok, do nothing >> Else >> Mkdir sFolderSpec >> End if >> >> End >> >> Regards >> >> Rolf >> >> Am 01.07.2011 05:58, schrieb Stephen Bungay: >> > Hi Fabien& Tobias; >> > >> > Thanks for taking the time to reply and putting those SUBs together. >> > Another way to do this is to simply execute a "mkdir -p " using the >> > command shell, but now that the problem exists I want to figure out why >> > the recursive routine is not behaving as expected. >> > Fabien, I thought the FINALLY did precede the CATCH within the >> > function... did it not? I reprint the SUB here with two additional >> > comments, a correction to a typo (thank you Tobias), and a conditional >> > surrounding the Mkdir in the Finally section just in case it tries to >> > make a directory that already exists and ends up going into an endless >> > loop. >> > >> > Private Sub CreateNewOutputFolder(psFolderSpecification As String) >> > Dim sFolderSpec As String >> > >> > sFolderSpec = psFolderSpecification >> > >> > Mkdir sFolderSpec >> > >> > Finally >> > If Not exists(sFolderSpec) Then >> > Mkdir sFolderSpec >> > End If >> > >> > Catch >> > sFolderSpec = Mid$(psFolderSpecification, 1, >> > RInStr(psFolderSpecification, "/") - 1) >> > CreateNewOutputFolder(sFolderSpec) >> > End >> > >> > >> > >> > >> > On 06/30/2011 10:09 AM, Fabien Bodard wrote: >> >> private sub CreateDirTree(sDir as string) >> >> >> >> dim s as string >> >> dim stmpDir as string = "/" >> >> >> >> if sdir begins "/" then sdir = right(sdir,-1) >> >> >> >> For each s in split(sDir, "/") >> >> stmpDir&= s >> >> if exist(stmpdir) then continue >> >> mkdir stmpdir >> >> next >> >> >> >> catch >> >> Print "The directory "& stmpdir& "can't be created" >> >> >> >> end >> >> >> >> >> >> 2011/6/30 Fabien Bodard<gambas...@gmail.com>: >> >>> The FINALLY part is not mandatory. If there is a catch part in the >> >>> function, the FINALLY part must precede it. >> >>> >> >>> http://gambasdoc.org/help/lang/finally >> >>> >> >>> The second call will be in the catch part not in finally. >> >>> >> >>> 2011/6/30 Stephen Bungay<sbun...@csolve.net>: >> >>>> Hi folks! >> >>>> >> >>>> Gambas 2.99 >> >>>> Fedora 14 >> >>>> >> >>>> Using mkdir with "catch" and "finally" to create a recursive SUB to >> >>>> build a directory structure. >> >>>> The harness consists of FormMain with one big-friendly button on it, >> >>>> pretty simple. Here is all of the code; >> >>>> >> >>>> ' Gambas class file >> >>>> >> >>>> Public Sub _new() >> >>>> >> >>>> End >> >>>> >> >>>> Public Sub Form_Open() >> >>>> >> >>>> End >> >>>> >> >>>> Private Sub CreateNewOutputFolder(psFolderSpecification As String) >> >>>> Dim sFolderSpec As String >> >>>> >> >>>> sFolderSpec = psFolderSpecification >> >>>> >> >>>> Mkdir sFolderSpec >> >>>> >> >>>> Finally >> >>>> Mkdir sFolderSpec >> >>>> >> >>>> Catch >> >>>> sFolderSpec = Mid$(psFolderSpecification, 1, >> >>>> RInStr(psFolderSpecification, ".") - 1) >> >>>> CreateNewOutputFolder(sFolderSpec) >> >>>> End >> >>>> >> >>>> Public Sub Button1_Click() >> >>>> >> >>>> CreateNewOutputFolder("/home/user/Rumple/Stilskin/Was/Here") >> >>>> >> >>>> End >> >>>> >> >>>> >> >>>> What I THINK should happen is the initial mkdir should fail, the >> >>>> code >> >>>> in "catch" should execute and copy the passed in parameter from position >> >>>> 1 to the charcter just prior to the last "/" and then call itself >> >>>> passing in the new result as the parameter. When/if that call fails (and >> >>>> it should as this folder specification doesn't exist in my home dir) it >> >>>> again recurses. This should go on until it reaches the left-most node in >> >>>> the directory structure (AFTER the "/home/user"), and THAT one >> >>>> ("/home/user/Rumple) should be the first to succeed in being created. >> >>>> The call stack should then unwind, and as it does, the previous SUBS on >> >>>> the stack should execute their "Finally" section. When the stack has >> >>>> completely unwound the directory structure should exist.... only that is >> >>>> not what is happening. >> >>>> The first Catch doesn't execute (although the directory does not get >> >>>> created.. meaning an error did indeed occur) and it skips directly to >> >>>> the "finally". When the mkdir in the "finally" is executed (same >> >>>> parameter string because we have not yet recursed) the error "File or >> >>>> Directory does not exist" pops up on the screen. Well there's the error >> >>>> that I expected from the initial mkdir, but the "catch" didn't execute, >> >>>> anybody got ideas? >> >>>> >> >>>> ------------------------------------------------------------------------------ >> >>>> All of the data generated in your IT infrastructure is seriously >> >>>> valuable. >> >>>> Why? It contains a definitive record of application performance, >> >>>> security >> >>>> threats, fraudulent activity, and more. Splunk takes this data and makes >> >>>> sense of it. IT sense. And common sense. >> >>>> http://p.sf.net/sfu/splunk-d2d-c2 >> >>>> _______________________________________________ >> >>>> Gambas-user mailing list >> >>>> Gambas-user@lists.sourceforge.net >> >>>> https://lists.sourceforge.net/lists/listinfo/gambas-user >> >>>> >> >>> >> >>> >> >>> -- >> >>> Fabien Bodard >> >>> >> >> >> >> >> > >> > >> > ------------------------------------------------------------------------------ >> > All of the data generated in your IT infrastructure is seriously valuable. >> > Why? It contains a definitive record of application performance, security >> > threats, fraudulent activity, and more. Splunk takes this data and makes >> > sense of it. IT sense. And common sense. >> > http://p.sf.net/sfu/splunk-d2d-c2 >> > _______________________________________________ >> > Gambas-user mailing list >> > Gambas-user@lists.sourceforge.net >> > https://lists.sourceforge.net/lists/listinfo/gambas-user >> > >> >> ------------------------------------------------------------------------------ >> All of the data generated in your IT infrastructure is seriously valuable. >> Why? It contains a definitive record of application performance, security >> threats, fraudulent activity, and more. Splunk takes this data and makes >> sense of it. IT sense. And common sense. >> http://p.sf.net/sfu/splunk-d2d-c2 >> _______________________________________________ >> Gambas-user mailing list >> Gambas-user@lists.sourceforge.net >> https://lists.sourceforge.net/lists/listinfo/gambas-user > ------- End of Original Message ------- > > > ------------------------------------------------------------------------------ > All of the data generated in your IT infrastructure is seriously valuable. > Why? It contains a definitive record of application performance, security > threats, fraudulent activity, and more. Splunk takes this data and makes > sense of it. IT sense. And common sense. > http://p.sf.net/sfu/splunk-d2d-c2 > _______________________________________________ > Gambas-user mailing list > Gambas-user@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/gambas-user > -- Fabien Bodard ------------------------------------------------------------------------------ All of the data generated in your IT infrastructure is seriously valuable. Why? It contains a definitive record of application performance, security threats, fraudulent activity, and more. Splunk takes this data and makes sense of it. IT sense. And common sense. http://p.sf.net/sfu/splunk-d2d-c2 _______________________________________________ Gambas-user mailing list Gambas-user@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/gambas-user