23. marts 2003 - 19:46Der 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.
I lang tid har samarbejdsbranchen fokuseret på at forbedre enhedsfunktioner – bedre kameraer, klarere lyd og smartere software. Men den virkelige forvandling handler ikke om funktioner.
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!
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
>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)
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.
Næ, det er ikke nogen bug. Sådan er det bare. -Se MSDN
Synes godt om
Ny brugerNybegynder
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.