Avatar billede -l_jogge_l- Nybegynder
02. februar 2004 - 11:37 Der er 38 kommentarer og
3 løsninger

Hjælp til opretnming af bibliteker ønskes!

Jeg har et lille program, hvori jeg skal bruge oprettelse af bibliotker.

Eks "C:\Test\Jepper\Kim"

Men skriver jeg:
Mkdir "C:\Test\Jepper\Kim", så melder den bare fejl
Og det dur ikke at jeg laver en:
Mkdir "C:\Test"
Mkdir "C:\Test\Jepper"
Mkdir "C:\Test\Jepper\Kim"

da de bliver lavet efter hvad folk har skrevet i en textbox.. altås det er op til folk selv, hvormange biblioteker de ligges i!
Avatar billede kabbak Professor
02. februar 2004 - 12:26 #1
dos i Xp
Shell "cmd.exe /k Md "& Text1.Text, vbHide

Dos under win98
Shell "Md "& Text1.Text, vbHide
Avatar billede -l_jogge_l- Nybegynder
02. februar 2004 - 13:07 #2
Uha... så har jeg et problem, for programmet komme nok til at køre på både, Win95, Win98, Win2K og XP!
Avatar billede slo Nybegynder
02. februar 2004 - 14:21 #3
Måske kan nedenstående gøres en smule pænere, men det virker da som du ønsker det. Tilbage er bare at putte det rigtige DirNavn ind i makroen.

Sub Makro()
Dim DirNavn As String, i As Integer, AntalDir As Integer, Split() As Integer
DirNavn = "c:\temp\Jeppe\kim"
If Right(DirNavn, 1) <> "\" Then
  DirNavn = DirNavn & "\"
End If
For i = 1 To Len(DirNavn)
  If Mid(DirNavn, i, 1) = "\" Then
    AntalDir = AntalDir + 1
    ReDim Preserve Split(1 To AntalDir)
    Split(AntalDir) = i
  End If
Next i
For i = 1 To AntalDir
  MakeDir Left(DirNavn, Split(i))
Next i
End Sub

Private Sub MakeDir(DirNavn As String)
If Dir(DirNavn, vbDirectory) = "" Then  'Ser om directory eksisterer i forvejen
  MkDir DirNavn
End If
End Sub
Avatar billede kabbak Professor
02. februar 2004 - 14:40 #4
Mon ikke det skal være således.

Sub Makro()
Dim DirNavn As String, i As Integer, Temp As String, BIB As Variant
DirNavn = "C:\Test\Jepper\Kim"
If Dir(DirNavn, vbDirectory) = "" Then  'Ser om directory eksisterer i forvejen
  BIB = Split(DirNavn, "\")
  Temp = ""
For i = 0 To UBound(BIB)
  MakeDir Temp & BIB(i)
  Temp = Temp & BIB(i) & "\"
Next i
End If
End Sub
Avatar billede -l_jogge_l- Nybegynder
02. februar 2004 - 14:47 #5
Den stopper lige her:

If Dir(DirNavn, vbDirectory) = "" Then

Og siger "Wrong number of arguments or invalid property assigment"

Det er "Dir" den marker!
Avatar billede slo Nybegynder
02. februar 2004 - 14:48 #6
Det kan man også - jeg var ikke klar over at der fandtes sådan en Split funktion. Men begge dele virker lige godt (så vidt jeg kan se...)
Avatar billede slo Nybegynder
02. februar 2004 - 14:51 #7
Hvilken makro har du sat til at køre? Du skal køre (min eller Kabbak's) "Makro" - husk også at kopiere makroen MakeDir fra mit svar - uden den er der ikke nogen af dem som virker.
Avatar billede -l_jogge_l- Nybegynder
02. februar 2004 - 14:56 #8
Den bliver ved med at stoppe...
Avatar billede slo Nybegynder
02. februar 2004 - 14:58 #9
Hvad er DirNavn når du stopper? (Prøv at hold musen hen over DirNavn når den stopper, så skulle du gerne kunne se det.)
Avatar billede -l_jogge_l- Nybegynder
02. februar 2004 - 15:00 #10
Så langt kommer jeg set ikke engang... den stopper allerede når jeg skriver

MakeDir...

Så skriver den "Argument not optional"
Avatar billede slo Nybegynder
02. februar 2004 - 15:02 #11
Du har misforstået noget :o)
Du skal køre makroen "Makro" og ændre 
DirNavn = "c:\temp\Jeppe\kim"
til det du ønsker.
Avatar billede -l_jogge_l- Nybegynder
02. februar 2004 - 15:03 #12
Ok.. jeg har osse prøvet sådan her:
Under Makro
DirNavn = lblPath.Caption
...

Men så skriver den bare
"Wrong number of arguments or invalid property assigment"

If Dir(DirNavn, vbDirectory) = "" Then
Det er "Dir" den marker!
Avatar billede kabbak Professor
02. februar 2004 - 15:14 #13
en der virker


Private Sub Command1_Click()
Dim DirNavn As String, i As Integer, Temp As String, BIB As Variant
  DirNavn = "C:\Test\Jepper\Kim"
  BIB = Split(DirNavn, "\")
  Temp = BIB(0) & "\"
  For i = 1 To UBound(BIB)
  Temp = Temp & BIB(i)
  If Dir(Temp, vbDirectory) = "" Then
    MkDir Temp
  End If
  Temp = Temp & "\"
  Next i
End Sub


PS. vi skriver i Visual Basic, det er forhåbentlig det du bruger
Avatar billede -l_jogge_l- Nybegynder
02. februar 2004 - 15:21 #14
Ja... VB 6.0!!!

Kabbak:

Den bliver ved med at stoppe her:
If Dir(DirNavn, vbDirectory) = "" Then
Det er "Dir" den marker!

Med fejlkoden:
"Wrong number of arguments or invalid property assigment"
Avatar billede kabbak Professor
02. februar 2004 - 15:23 #15
prøv at køre den sidste jeg sendte
Avatar billede slo Nybegynder
02. februar 2004 - 15:25 #16
Har du måske selv oprettet en variabel eller funktion med navnet "Dir" ??
Avatar billede -l_jogge_l- Nybegynder
02. februar 2004 - 15:25 #17
Det er den jeg lige har prøvet...

Men den "dir" er der noget ivejen med....

Er det en Dim as ??? eller noget???
Avatar billede -l_jogge_l- Nybegynder
02. februar 2004 - 15:25 #18
Eller mangler jeg en refference???
Avatar billede kabbak Professor
02. februar 2004 - 15:26 #19
dir er en kommando i VB.

Jeg har testet i VB6.0, og der kører den.
Avatar billede -l_jogge_l- Nybegynder
02. februar 2004 - 15:28 #20
Hvilke refferencer har du på?
Avatar billede -l_jogge_l- Nybegynder
02. februar 2004 - 15:30 #21
Har lige prøvet den af en en HELT NY, helt ren VB program:

Private Sub Command1_Click()
Dim DirNavn As String, i As Integer, Temp As String, BIB As Variant, Dir As String
 
  DirNavn = Text1.Text
  BIB = Split(DirNavn, "\")
  Temp = BIB(0) & "\"
  For i = 1 To UBound(BIB)
  Temp = Temp & BIB(i)
  If Dir(Temp, vbDirectory) = "" Then
    MkDir Temp
  End If
  Temp = Temp & "\"
  Next i

End Sub

Det eneste der er, er en textbox og en knap.... der virker den heller ikke,,,,,
Avatar billede kabbak Professor
02. februar 2004 - 15:30 #22
standard, jeg har ikke tilføjet speciel.

Har du Excel, den kan også køre der i et modul, jeg bruger Excell 2000
Avatar billede -l_jogge_l- Nybegynder
02. februar 2004 - 15:46 #23
ingen ideer?
Avatar billede kabbak Professor
02. februar 2004 - 15:48 #24
Har tid senere i aften
Avatar billede sjh Nybegynder
02. februar 2004 - 15:50 #25
her er hele 2 måder at gøre det på: http://www.eksperten.dk/spm/423760
Avatar billede kabbak Professor
02. februar 2004 - 18:02 #26
Fejlen er her

Dim DirNavn As String, i As Integer, Temp As String, BIB As Variant, Dir As String

den skal se sådan ud

Dim DirNavn As String, i As Integer, Temp As String, BIB As Variant
Avatar billede kabbak Professor
02. februar 2004 - 18:12 #27
Private Sub Command1_Click()
Dim DirNavn As String, i As Integer, Temp As String, BIB As Variant
  If Mid(Text1.Text, 2, 1) <> ":" Then
  MsgBox " Du skal skrive drev betegnelsen også" _
  & vbLf & "f.eks. 'C:\ ' eller 'D:\ '"
  Exit Sub
  End If
  DirNavn = Text1.Text
  BIB = Split(DirNavn, "\")
  Temp = BIB(0) & "\"
  For i = 1 To UBound(BIB)
  Temp = Temp & BIB(i)
  If Dir(Temp, vbDirectory) = "" Then
    MkDir Temp
  End If
  Temp = Temp & "\"
  Next i
Text1.Text = " Udført"
End Sub
Avatar billede slo Nybegynder
03. februar 2004 - 08:44 #28
Alle ovenstående svar er stadig varianter over det jeg gav i første forsøg.... Hvis du stadig ikke kan få
Dir(Temp, vbDirectory)
til at virke, så vil ovenstående forsøg fortsat ikke virke.
Avatar billede -l_jogge_l- Nybegynder
03. februar 2004 - 08:46 #29
Fedest!!!

Takker Kabbak
Avatar billede kabbak Professor
03. februar 2004 - 08:47 #30
Slo >> det virkede ikke fordi jogge havde Dimmet Dir som string.

Man må ikke dimme en kommando
Avatar billede kabbak Professor
03. februar 2004 - 08:48 #31
så smider jeg et svar.
Avatar billede slo Nybegynder
03. februar 2004 - 08:52 #32
kabbak >> Har jeg allerede skrevet tidligere (02/02-2004 15:25:12) - min pointe er sådan set bare at der ikke er tilføjet noget nyt til "debatten" siden vi startede i går. Hvis jogge havde kopieret vores første makroer, uden selv - af uransaglige grunde - at dim'e "Dir" samtidig med, ville det have virket uden al denne her ping-pong frem og tilbage.
Avatar billede kabbak Professor
03. februar 2004 - 08:53 #33
Ja, det er korrekt
Avatar billede kabbak Professor
03. februar 2004 - 08:58 #34
Slo >> jeg har lavet min så den tjekker hvert bibliotek, om det eksisterer i forvejen, det kan jo være at det først det sidste nævnt der skal oprettes.
Avatar billede slo Nybegynder
03. februar 2004 - 09:01 #35
Exactly does I :-) Jeg bruger to sub's - den ene "MakeDir" tjekker om et givent bib. eksisterer og opretter det hvis det ikke gør.
Den anden forskel der er, er brugen af VB's Split funktion, hvor jeg selv har "opfundet" en og du bruger den indbyggede.
Avatar billede -l_jogge_l- Nybegynder
03. februar 2004 - 09:04 #36
Skal jeg dele pointene ud til er begge eller???
Avatar billede kabbak Professor
03. februar 2004 - 09:06 #37
Slos kode er også rigtig, jeg kavde ikke lige nærlæst begge subs, de gør det samme begge vores koder.
Avatar billede -l_jogge_l- Nybegynder
03. februar 2004 - 09:33 #38
I får 30 hver.... 1000 takker
Avatar billede -l_jogge_l- Nybegynder
03. februar 2004 - 09:37 #39
Kan I sige mig hvilket der mangler her:

http://www.eksperten.dk/spm/460367
Avatar billede slo Nybegynder
03. februar 2004 - 09:38 #40
Så må jeg jo hellere også smide et svar....
Avatar billede -l_jogge_l- Nybegynder
03. februar 2004 - 09:56 #41
SLO: Hop lige herhen:
http://www.eksperten.dk/spm/460394
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester