|
| Oprette direktorie fra VB Fra : Bent Bek Clausen |
Dato : 06-02-02 09:02 |
|
Det burde være muligt - og er det sikkert også:
Jeg vil lade min VB applikation oprette et direktorie ved opstart, men kun
hvis dette direktorie ikke findes endnu. Voddan dælen ser koden til sådan en
handling. Jeg har prøvet med MkDir, men compileren 'brækker sig'.
Direktoriet skal være underdirektorie til det, hvor applikationen er
installeret.
MVH Bent ?
| |
Tomas Christiansen (06-02-2002)
| Kommentar Fra : Tomas Christiansen |
Dato : 06-02-02 12:02 |
|
Bent Bek Clausen skrev:
> Jeg har prøvet med MkDir, men compileren 'brækker sig'.
Ikke desto mindre er det MkDir, som du skal bruge.
Hvilken fejl får du?
Husk at hvis du prøver at oprette:
MkDir "Dir\SubDir"
skal "Dir" eksisterer før du kan oprette "SubDir".
-------
Tomas
| |
Bent Bek Clausen (06-02-2002)
| Kommentar Fra : Bent Bek Clausen |
Dato : 06-02-02 13:30 |
|
Thomas,
tjah, nogen gange fumler man sikkert lidt - jo, det virker også med 'CurDir'
som basis, men hvordan gør jeg så for at undgå at blive stoppet af fejl 75,
hvis direktoriet allerede eksisterer ??? Kan man spørge om direktoriet
eksisterer ?
MVH Bent ?
Tomas Christiansen skrev i meddelelsen ...
>Bent Bek Clausen skrev:
>> Jeg har prøvet med MkDir, men compileren 'brækker sig'.
>
>Ikke desto mindre er det MkDir, som du skal bruge.
>
>Hvilken fejl får du?
>
>Husk at hvis du prøver at oprette:
>
> MkDir "Dir\SubDir"
>
>skal "Dir" eksisterer før du kan oprette "SubDir".
>
>-------
>Tomas
>
| |
Ove Hansen (06-02-2002)
| Kommentar Fra : Ove Hansen |
Dato : 06-02-02 15:13 |
|
"Bent Bek Clausen" <bent.bek.clausen@get2net.dk>
wrote in message
news:3c612176$0$210$edfadb0f@dspool01.news.tele.dk
....
> Thomas,
>
> tjah, nogen gange fumler man sikkert lidt - jo,
det virker også med 'CurDir'
> som basis, men hvordan gør jeg så for at undgå
at blive stoppet af fejl 75,
> hvis direktoriet allerede eksisterer ??? Kan
man spørge om direktoriet
> eksisterer ?
[klip...]
Brug "On error goto ..." eller "On error resume
next" før du laver MkDir
/Ove
| |
Bent Bek Clausen (07-02-2002)
| Kommentar Fra : Bent Bek Clausen |
Dato : 07-02-02 08:47 |
|
Tak for tip'et / Bent
Ove Hansen skrev i meddelelsen
<3c6139ef$0$62887$edfadb0f@dspool01.news.tele.dk>...
>
>"Bent Bek Clausen" <bent.bek.clausen@get2net.dk>
>
>Brug "On error goto ..." eller "On error resume
>next" før du laver MkDir
>/Ove
>
>
>
| |
Per Madsen (06-02-2002)
| Kommentar Fra : Per Madsen |
Dato : 06-02-02 16:25 |
|
"Bent Bek Clausen" <bent.bek.clausen@get2net.dk> wrote in message
news:3c60e2b2$0$243$edfadb0f@dspool01.news.tele.dk...
> Det burde være muligt - og er det sikkert også:
>
> Jeg vil lade min VB applikation oprette et direktorie ved opstart, men kun
> hvis dette direktorie ikke findes endnu. Voddan dælen ser koden til sådan
en
> handling. Jeg har prøvet med MkDir, men compileren 'brækker sig'.
>
> Direktoriet skal være underdirektorie til det, hvor applikationen er
> installeret.
>
> MVH Bent ?
>
>
Du kan bruge noget i retning af:
-
-
-
On Error Resume Next
MkDir App.path & "\dit_direktorie"
On Error Goto 0
-
-
-
mvh
-Per
| |
Tomas Christiansen (06-02-2002)
| Kommentar Fra : Tomas Christiansen |
Dato : 06-02-02 20:57 |
|
Per Madsen skrev:
> On Error Resume Next
> MkDir App.path & "\dit_direktorie"
> On Error Goto 0
Lige netop dette er nok et af de mindre gode forslag.
App.Path returner i visse sammenhænge en sti, som ender med en
backslash, og hvis dette sættes sammen med "\dit_direktorie" får man
to backslasher efter hinanden, hvilket naturligvis vil (skal) give en
fejl. Denne fejl bliver i ovenstående kode ignoreret, selvom den ikke
burde blive det.
-------
Tomas
| |
Tomas Christiansen (06-02-2002)
| Kommentar Fra : Tomas Christiansen |
Dato : 06-02-02 23:24 |
|
Tomas Christiansen skrev:
> App.Path returner i visse sammenhænge en sti, som ender med en
> backslash, og hvis dette sættes sammen med "\dit_direktorie" får man
> to backslasher efter hinanden, hvilket naturligvis vil (skal) give
en
> fejl. Denne fejl bliver i ovenstående kode ignoreret, selvom den
ikke
> burde blive det.
Jeg må æde mine ord i mig igen! (gumle, gumle)
En test på min PC viste, at i kommando prompt ("DOS" kommandoer),
bliver "\\" betragtet som "\". Jeg kører Windows 2000.
Jeg VED at tidligere tests har vist at dette har givet problemer - har
formentlig været på Windows 95.
Kan nogen bekræfte/afkræfte - endsige forklare hvorfor
dobbelt-backslash bliver betragtet som enkelt-backslash (selvom det
unægtelig er ganske behageligt i visse situationer).
-------
Tomas
| |
Krabsen (06-02-2002)
| Kommentar Fra : Krabsen |
Dato : 06-02-02 19:03 |
|
sub danDir(dirnavn as string)
on error goto eh
MkDir dirnavn
Exit Sub
eh:
Select case Err
Case 75 ' bibliotek findes allerede
Resume Next
Case else
MsgBox Error
End Select
end Sub
mvh
Krabsen
"Bent Bek Clausen" <bent.bek.clausen@get2net.dk> skrev i en meddelelse
news:3c60e2b2$0$243$edfadb0f@dspool01.news.tele.dk...
> Det burde være muligt - og er det sikkert også:
>
> Jeg vil lade min VB applikation oprette et direktorie ved opstart, men kun
> hvis dette direktorie ikke findes endnu. Voddan dælen ser koden til sådan
en
> handling. Jeg har prøvet med MkDir, men compileren 'brækker sig'.
>
> Direktoriet skal være underdirektorie til det, hvor applikationen er
> installeret.
>
> MVH Bent ?
>
>
| |
Carsten Jessen (06-02-2002)
| Kommentar Fra : Carsten Jessen |
Dato : 06-02-02 21:48 |
|
"Bent Bek Clausen" <bent.bek.clausen@get2net.dk> wrote in message
news:3c60e2b2$0$243$edfadb0f@dspool01.news.tele.dk...
> Det burde være muligt - og er det sikkert også:
>
> Jeg vil lade min VB applikation oprette et direktorie ved opstart, men kun
> hvis dette direktorie ikke findes endnu. Voddan dælen ser koden til sådan
en
> handling. Jeg har prøvet med MkDir, men compileren 'brækker sig'.
>
> Direktoriet skal være underdirektorie til det, hvor applikationen er
> installeret.
>
> MVH Bent ?
>
>
>
Hej Alle
Er det kun mig der synes at 'On error' er noget møg? Hvorfor sætte sit
program til at vente på at det laver en fejl?
Hvad med:
If Dir(App.Path & "\NytDir") = Empty Then MkDir App.Path & "\NytDir"
MVH Carsten
| |
Morten Holdflod Møll~ (06-02-2002)
| Kommentar Fra : Morten Holdflod Møll~ |
Dato : 06-02-02 22:00 |
|
> Hvad med:
> If Dir(App.Path & "\NytDir") = Empty Then MkDir App.Path & "\NytDir"
Generelt vil man gerne have håndteringen af fejlsituationerne adskilt fra
den egengtlige kode. Jeg ser, at det kan være anvendeligt nok i dette lille
eksempel.
Forestil dig en større procedure med mange undtagelser. Der bliver det
nærmest et must, at adskille "normal" situationen fra "undtagelserne" for
ikke at miste "læseligheden" (eller læsbarheden eller hvad man nu kalder
det...)
Med venlig hilsen
Morten Møller
| |
Krabsen (06-02-2002)
| Kommentar Fra : Krabsen |
Dato : 06-02-02 22:18 |
|
Jeg ved ikke, om det kun er dig, men mig generer det ikke det mindste
Jeg betragter det nemlig ikke nødvendigvis som en _fejl_: Når nu Windows, VB
eller i andre tilfælde CRW - er så venlig at returnere en specifik kode for
resultatet af kommandoen i stedet for blot at svare 'false' - kan man så
ikke lige så godt udnytte det?
mvh
Krabsen
"Carsten Jessen" <c.je@get2net.dk> skrev i en meddelelse
news:1Eg88.4962$Ov1.364231841@news.orangenet.dk...
> >
> Hej Alle
> Er det kun mig der synes at 'On error' er noget møg? Hvorfor sætte sit
> program til at vente på at det laver en fejl?
>
> Hvad med:
> If Dir(App.Path & "\NytDir") = Empty Then MkDir App.Path & "\NytDir"
>
> MVH Carsten
>
>
| |
peter (25-02-2002)
| Kommentar Fra : peter |
Dato : 25-02-02 02:36 |
|
Du kan bruge:
If Not Fso.FolderExists("billeder") Then MkDir "billeder"
hvor Fso er erklæret:
Dim Fso
Set Fso = CreateObject("Scripting.FileSystemObject")
Ved at bruge FileSystemObject får du adgang til en masse andre nyttige
fil-ting.
hilsen Peter
On Wed, 6 Feb 2002 09:01:59 +0100, "Bent Bek Clausen"
<bent.bek.clausen@get2net.dk> wrote:
>Det burde være muligt - og er det sikkert også:
>
>Jeg vil lade min VB applikation oprette et direktorie ved opstart, men kun
>hvis dette direktorie ikke findes endnu. Voddan dælen ser koden til sådan en
>handling. Jeg har prøvet med MkDir, men compileren 'brækker sig'.
>
>Direktoriet skal være underdirektorie til det, hvor applikationen er
>installeret.
>
>MVH Bent ?
>
>
| |
Tomas Christiansen (25-02-2002)
| Kommentar Fra : Tomas Christiansen |
Dato : 25-02-02 13:49 |
|
peter skrev:
> Dim Fso
> Set Fso = CreateObject("Scripting.FileSystemObject")
Det kan kun på det kraftigste anbefales at man IKKE instantierer
objekter fra ActiveX DLL'er på den måde i VB (man er dog nødt til det
i "VB-lignende" miljøer som VBA og ASP), men i stedet benytter formen:
Dim FSO As Scripting.FileSystemObject
Set FSO = New Scripting.FileSystemObject
-------
Tomas
| |
Mikkel Bundgaard (25-02-2002)
| Kommentar Fra : Mikkel Bundgaard |
Dato : 25-02-02 16:51 |
|
"Tomas Christiansen" <toc@blikroer.removethis.dk> wrote in message
news:a5dbrr$2kav$1@news.cybercity.dk...
> peter skrev:
> > Dim Fso
> > Set Fso = CreateObject("Scripting.FileSystemObject")
>
> Det kan kun på det kraftigste anbefales at man IKKE
> instantierer objekter fra ActiveX DLL'er på den måde i VB
> (man er dog nødt til det i "VB-lignende" miljøer som VBA og
> ASP), men i stedet benytter formen:
>
> Dim FSO As Scripting.FileSystemObject
> Set FSO = New Scripting.FileSystemObject
>
> -------
> Tomas
Hej Tomas
Man kan sagtens bruge formen
Dim FSO As Scripting.FileSystemObject
Set FSO = New Scripting.FileSystemObject
i VBA, så det gælder nok kun for ASP (tror jeg).
--
Mikkel Bundgaard
IT University of Copenhagen
http://officehelp.gone.dk
Codito, Ergo Sum
| |
peter (25-02-2002)
| Kommentar Fra : peter |
Dato : 25-02-02 20:43 |
|
Hej Tomas.
Tak for hintet.
Hvorfor? Jeg mener, hvilke uheldige konsekvenser kan det have?
hilsen PeterB
>peter skrev:
>> Dim Fso
>> Set Fso = CreateObject("Scripting.FileSystemObject")
>
>Det kan kun på det kraftigste anbefales at man IKKE instantierer
>objekter fra ActiveX DLL'er på den måde i VB (man er dog nødt til det
>i "VB-lignende" miljøer som VBA og ASP), men i stedet benytter formen:
>
>Dim FSO As Scripting.FileSystemObject
>Set FSO = New Scripting.FileSystemObject
>
>-------
>Tomas
>
| |
Tomas Christiansen (25-02-2002)
| Kommentar Fra : Tomas Christiansen |
Dato : 25-02-02 23:56 |
|
peter skrev:
> Hvorfor? Jeg mener, hvilke uheldige konsekvenser kan det have?
Du er erklærede variablen Fso af typen Variant, hvilket gør, at du
ikke får nogen hjælp fra VB, hvis du skriver Fso efterfulgt af et
punktum.
Helt generelt bør varianter undgås hvis det er muligt.
Desuden hvis du f.eks. bruger "Package & Deployment Wizard" til at
lave en installationspakke, vil den ikke opdage, at der er brug for
filen scrrun.dll.
Når man bruger CreateObject frem for New er der gode chancer for, at
det vil koste mere CPU-tid at bruge objektet (præcis hvornår dette
sker og hvorfor er en længere teknisk snak).
Men pas nu på med at gå over til at bruge:
Dim XXX As New YYY
Det kan give mange problemer, f.eks. hvis du ønsker at teste på om
objektet er instantieret eller ej, idet
If XXX Is Nothing Then ...
vil herefter ALTID vil være sand.
-------
Tomas
| |
PeterB (26-02-2002)
| Kommentar Fra : PeterB |
Dato : 26-02-02 00:42 |
|
Hej Tomas.
OOOKAY..... det forklarer et par ting, jeg virkelig har undret mig
over.
Tusind tak for forklaringen!
mvh PeterB
>Du er erklærede variablen Fso af typen Variant, hvilket gør, at du
>ikke får nogen hjælp fra VB, hvis du skriver Fso efterfulgt af et
>punktum.
>
>Helt generelt bør varianter undgås hvis det er muligt.
>
>Desuden hvis du f.eks. bruger "Package & Deployment Wizard" til at
>lave en installationspakke, vil den ikke opdage, at der er brug for
>filen scrrun.dll.
>
| |
|
|