/ Forside / Teknologi / Udvikling / VB/Basic / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
VB/Basic
#NavnPoint
berpox 2425
pete 1435
CADmageren 1251
gibson 1230
Phylock 887
gandalf 836
AntonV 790
strarup 750
Benjamin... 700
10  tom.kise 610
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.
>



Søg
Reklame
Statistik
Spørgsmål : 177501
Tips : 31968
Nyheder : 719565
Indlæg : 6408526
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste