Avatar billede kjeld_klit Nybegynder
23. marts 2003 - 19:46 Der er 5 kommentarer og
1 løsning

App.Path og Drive1/Dir1

Først lidt kode:
Drive1.Dive = App.Path
Dir1.Path = Drive1.Drive
File1.Path = Dir1.Path

Hvis ovenstående er kørt og jeg umiddelbart ser efter er File1.Path og App.Path 100% ens.

Men hvis jeg klikker lidt rundt i Drive1 boksen, ud på a: e: osv. og tilbage til min App. så jeg står nøjagtig samme sted igen, er de ikke helt ens længere. Forskellen er at i File1.Path står der c:\..... mens der i App.Path står C:\.... (Med stort C)

Det betyder at jeg ikke kan sige: If File1.Path = App.Path Then ....

Denne ændring opstår først når ...
Private Sub Drive1_Change()
    Dir1.Path = Drive1.Drive
    File1.Path = Dir1.Path
End Sub
...er kørt.

Det ser ud som om at Drive1 læser drev-bogstvet på en anden måde (med lille) end App.Path gør (med stort). Det lille derv-bogstav bliver kopieret til Dir1 og File1 og så kan sammenliglingen med App.Path aldrig blive sand.

Hvad gør jeg?
Avatar billede kjeld_klit Nybegynder
23. marts 2003 - 19:49 #1
En lille fejl:
Drive1.Dive = App.Path
Dir1.Path = App.Path
File1.Path = Dir1.Path
...er det der sår i min kode, det er nok derfor det virker inden jeg klikker på Drive1!
Avatar billede joern Nybegynder
23. marts 2003 - 20:21 #2
Hej.

Du mangler at angive styresystem.  Det kan ikke være win98, for den er da ligeglad.  Hvad med lcase(....)

M.v.h.  Jørn
Avatar billede sjh Nybegynder
24. marts 2003 - 03:19 #3
Brug "LCase$" eller "UCase$" til If ....


Option Explicit

Private Sub Dir1_Change()
  File1.Path = Dir1.Path
  Call Opdate
End Sub

Private Sub Drive1_Change()
  Dir1.Path = Drive1.Drive
  Call Opdate
End Sub

Private Sub Form_Load()
  Call StartIn("D:\BACKUP")
End Sub

Public Sub StartIn(ByVal strPath As String)
  Drive1.Drive = strPath
  Dir1.Path = strPath
End Sub

Public Function Opdate()
  If LCase$(Dir1.Path) = LCase$("C:\Programmer") Then

    'Text1.Text = LCase$(Dir1.Path) 'Små aa
    'eller
    'Text1.Text = UCase$(Dir1.Path) 'Store AA
    'eller
    Text1.Text = ProperCase(Dir1.Path) 'Store/Små (Aa Bb\Cc_Dd...)

  End If
End Function

Public Function ProperCase(ByVal strTekst As String) As String
Dim i As Integer
Dim bUCase As Boolean
Dim strTemp As String
  For i = 1 To Len(strTekst)
    strTekst = LCase$(strTekst)
    Select Case Mid$(strTekst, i, 1)
          Case "\", "/", "_", " "
            strTemp = strTemp & Mid(strTekst, i, 1)
            bUCase = True
          Case Else
            If bUCase = True Then
              strTemp = strTemp & UCase$(Mid(strTekst, i, 1))
              bUCase = False
                Else
              strTemp = strTemp & Mid(strTekst, i, 1)
            End If
    End Select
  Next i
ProperCase = UCase$(Left$(strTemp, 1)) & Right$(strTemp, Len(strTemp) - 1)
End Function
Avatar billede kjeld_klit Nybegynder
24. marts 2003 - 16:06 #4
>sjh, jeg havde selv tænkt man kunne komme om ved det noget ligende det du siger. Jeg havde allerede gjort følgende:
Private Sub Drive1_Change()
    Dir1.Path = StrConv(Drive1.Drive, vbProperCase)
    File1.Path = Dir1.Path
End Sub
... og det virker rent faktisk. Men kan det virkelig være rigtigt at man skal ændre Drive1.Drive-strengen?
Hvordan kan jeg så vide at App.Path ser ud som den gør på andre maskiner?
Eller skal jeg konvertere App.Path til et format jeg selv kontrollerer også?
Er det "kun" fordi det er en If...Then sætning eller kan problemet ske i andre sammenhænge?

(Fejlen kom på de 2 maskiner jeg har: WinXP, Win98)
Avatar billede tjacob Juniormester
25. marts 2003 - 13:59 #5
Jeg tror det er en bug i DriveListBox kontrollen.

Jeg har lige prøvet at indsætte en i en form, og alle
mine drevbogstaver (6) var også med lille.
Selvom navnene (som jeg oprindeligt har skrevet med UpperCase) var OK.

/tjacob
Avatar billede tjacob Juniormester
25. marts 2003 - 14:11 #6
Næ, det er ikke nogen bug. Sådan er det bare. -Se MSDN
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

IT-JOB

Forsvarsministeriets Materiel- og Indkøbsstyrelse

Cyberdivisionen søger leder til Lokal IT Servicecenter i Holstebro

Riskpoint A/S (Riskpoint Solutions Limited)

Senior Developer

Rambøll Management Consulting

Senior AI Engineer