/ 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
Rekursivt kald virker i VB-Envirome
Fra : Allan


Dato : 06-07-01 13:41

Hej Alle

Jeg har lavet et lille program der rekursivt finder biblioteker og
underbiblioteker..

Jeg bruger et rekursivt kald til at trave igennem alle biblioteker. Jeg
laver en exe-fil og herefter kører programmet, men virker det ikke. ex:
c:\test
- a
- aa
- b
- c
- ca

c:\test c:\test\a og c:\test\aa bliver gennemgået men ikke c:\test\b osv.

Humlen er at programmet virker når jeg kører programmet i VB, men ikke når
jeg kører det som en exe-fil.

Håber i forstår hvad jeg mener!

 
 
preben nielsen (06-07-2001)
Kommentar
Fra : preben nielsen


Dato : 06-07-01 17:02


"Allan" <ahj@bminet.dk> skrev i en meddelelse
news:a9d9a699.0107060440.18284a97@posting.google.com...
> Hej Alle
>
> Jeg har lavet et lille program der rekursivt finder biblioteker
og
> underbiblioteker..
>
[SNIP]
>
> Humlen er at programmet virker når jeg kører programmet i VB,
men ikke når
> jeg kører det som en exe-fil.
>
> Håber i forstår hvad jeg mener!

Forventer du at folk skal fortælle dig hvad du gør galt når du
ikke viser HVAD du gør ?

Det er let nok at finde dig noget code som virker, men vil du
ikke helst have rettet fejlen i din egen code ??


--

/\ preben nielsen
\/\ prel@post.tele.dk


Allan (09-07-2001)
Kommentar
Fra : Allan


Dato : 09-07-01 09:55

Hej Preben

Det kan du dælme godt have ret i:

BMIVBFILE OG BMIFILE er klasser i en dll vi selv har lavet.
Form1 viser bare en status.

Option Explicit



Dim BMIVBFILE As New BMIPROC.modVBFileDisk
Dim BMIFILE As New BMIPROC.clsFiles

Dim aCommand() As String
Dim sMainFolder As String
Dim sChangeFrom As String
Dim sChangeTo As String



Sub Main()
'Declarations
Dim sCommandline As String
Dim sCurrentFolder As String

Form1.Show

'Hent Commandline og gem i variabler
sCommandline = Command()

If sCommandline = "" Then
Exit Sub
End If

aCommand() = Split(sCommandline, " ")
If aCommand(0) = "" Or aCommand(0) = "" Then
Exit Sub
End If

sCurrentFolder = aCommand(0)
sChangeFrom = aCommand(1)
sChangeTo = aCommand(2)

'Rename filerne rekursivt gemmen bibliotekerne

Call ChangeFileInLib(sCurrentFolder)

GoTo Exit_Sub

Error_Handler:
MsgBox Err.Description

Exit_Sub:
Set BMIVBFILE = Nothing
Set BMIFILE = Nothing

MsgBox "Operation Completed", vbInformation, "Change"
End Sub

Private Sub ChangeFileInLib(sCurrentFolder As String)

On Error Resume Next

Dim aSubFolder() As String
Dim aFileSource() As String
Dim I As Integer
Dim J As Integer

Form1.lblCurrentLib = sCurrentFolder
Form1.Refresh

'Hent alle subfolder
Call BMIVBFILE.SubDirsToArray(sCurrentFolder, aSubFolder(), True, True)

'Læg alle filer i array
aFileSource = MoveFilesToArray(sCurrentFolder)

'Omdøb for hver fil i nuværende bib.
For I = LBound(aFileSource) To UBound(aFileSource)
Call ChangeFile(sCurrentFolder & aFileSource(I))
Next I

'Kald rekursivt for hver underbibliotek i nuværende bib.
For J = LBound(aSubFolder) To UBound(aSubFolder)
'MsgBox "NEXT ChangeFileInLib: " & sCurrentFolder & aSubFolder(J)

Call ChangeFileInLib(sCurrentFolder & aSubFolder(J))
Next J
End Sub

Private Function MoveFilesToArray(sCurrentFolder As String) As Variant

On Error Resume Next

'Declarations
Dim BMIVBFILE As New BMIPROC.modVBFileDisk
Dim aFile() As String

'Hent alle filer i folderen
Call BMIVBFILE.FilesToArray(sCurrentFolder, True, True, aFile)

'Returner array
MoveFilesToArray = aFile
End Function



Private Sub ChangeFile(sFile As String)

Dim sNewFile As String
Dim sFilePath As String
Dim sFileName As String
Static nChangeCount As Integer

'Test
Debug.Print sFile & ":" & InStr(1, sFile, sChangeFrom)

If InStr(1, sFile, sChangeFrom) > 0 Then
nChangeCount = nChangeCount + 1
Form1.lblChangeCount.Caption = nChangeCount
End If

Form1.lblCurrentFile.Caption = sFile
Form1.Refresh

'Gem path og filnavn
sFilePath = BMIFILE.ExtractPath(sFile, True)
sFileName = BMIFILE.ExtractFile(sFile)

'Ændre kun filnavn store og små bogstaver
sFileName = Replace(sFileName, sChangeFrom, sChangeTo)
sFileName = Replace(sFileName, UCase(sChangeFrom), sChangeTo)

'Gem nyt navn
sNewFile = sFilePath + sFileName

'Rename the current file
Name sFile As sNewFile

End Sub


ahj@bminet.dk (Allan) wrote in message news:<a9d9a699.0107060440.18284a97@posting.google.com>...
> Hej Alle
>
> Jeg har lavet et lille program der rekursivt finder biblioteker og
> underbiblioteker..
>
> Jeg bruger et rekursivt kald til at trave igennem alle biblioteker. Jeg
> laver en exe-fil og herefter kører programmet, men virker det ikke. ex:
> c:\test
> - a
> - aa
> - b
> - c
> - ca
>
> c:\test c:\test\a og c:\test\aa bliver gennemgået men ikke c:\test\b osv.
>
> Humlen er at programmet virker når jeg kører programmet i VB, men ikke når
> jeg kører det som en exe-fil.
>
> Håber i forstår hvad jeg mener!

Niels (12-07-2001)
Kommentar
Fra : Niels


Dato : 12-07-01 18:25

Hej


Jeg kikke lidt på koden. Umiddelbart ser koden ok ud.
Men jeg ser du bruger On Error Resume Next. Dette er
potenitelt farligt. Specitelt hvis der er fejl hvor man ikke
forventer det (On Error Resume Next er til kente fejl man
vil ignorere), og ved kald af egne funktioner der er fejl i.
Jeg vil anbefale at du midlertidigt erstatter On Error Resume Next
med On Error Goto VisFejl:
og tilføje i funktionerne
VisFejl:
MsgBox Str$(Err.Number) & ":" & Err.Description
Resume Next

Og så test efter at der ikke opstår fejl der ikke var forventet.

- Niels G.


"Allan" <ahj@bminet.dk> wrote in message
news:a9d9a699.0107090055.38de2859@posting.google.com...
> Hej Preben
>
> Det kan du dælme godt have ret i:
>
> BMIVBFILE OG BMIFILE er klasser i en dll vi selv har lavet.
> Form1 viser bare en status.
>
> Option Explicit
>
>
>
> Dim BMIVBFILE As New BMIPROC.modVBFileDisk
> Dim BMIFILE As New BMIPROC.clsFiles
>
> Dim aCommand() As String
> Dim sMainFolder As String
> Dim sChangeFrom As String
> Dim sChangeTo As String
>
>
>
> Sub Main()
> 'Declarations
> Dim sCommandline As String
> Dim sCurrentFolder As String
>
> Form1.Show
>
> 'Hent Commandline og gem i variabler
> sCommandline = Command()
>
> If sCommandline = "" Then
> Exit Sub
> End If
>
> aCommand() = Split(sCommandline, " ")
> If aCommand(0) = "" Or aCommand(0) = "" Then
> Exit Sub
> End If
>
> sCurrentFolder = aCommand(0)
> sChangeFrom = aCommand(1)
> sChangeTo = aCommand(2)
>
> 'Rename filerne rekursivt gemmen bibliotekerne
>
> Call ChangeFileInLib(sCurrentFolder)
>
> GoTo Exit_Sub
>
> Error_Handler:
> MsgBox Err.Description
>
> Exit_Sub:
> Set BMIVBFILE = Nothing
> Set BMIFILE = Nothing
>
> MsgBox "Operation Completed", vbInformation, "Change"
> End Sub
>
> Private Sub ChangeFileInLib(sCurrentFolder As String)
>
> On Error Resume Next
>
> Dim aSubFolder() As String
> Dim aFileSource() As String
> Dim I As Integer
> Dim J As Integer
>
> Form1.lblCurrentLib = sCurrentFolder
> Form1.Refresh
>
> 'Hent alle subfolder
> Call BMIVBFILE.SubDirsToArray(sCurrentFolder, aSubFolder(), True,
True)
>
> 'Læg alle filer i array
> aFileSource = MoveFilesToArray(sCurrentFolder)
>
> 'Omdøb for hver fil i nuværende bib.
> For I = LBound(aFileSource) To UBound(aFileSource)
> Call ChangeFile(sCurrentFolder & aFileSource(I))
> Next I
>
> 'Kald rekursivt for hver underbibliotek i nuværende bib.
> For J = LBound(aSubFolder) To UBound(aSubFolder)
> 'MsgBox "NEXT ChangeFileInLib: " & sCurrentFolder & aSubFolder(J)
>
> Call ChangeFileInLib(sCurrentFolder & aSubFolder(J))
> Next J
> End Sub
>
> Private Function MoveFilesToArray(sCurrentFolder As String) As Variant
>
> On Error Resume Next
>
> 'Declarations
> Dim BMIVBFILE As New BMIPROC.modVBFileDisk
> Dim aFile() As String
>
> 'Hent alle filer i folderen
> Call BMIVBFILE.FilesToArray(sCurrentFolder, True, True, aFile)
>
> 'Returner array
> MoveFilesToArray = aFile
> End Function
>
>
>
> Private Sub ChangeFile(sFile As String)
>
> Dim sNewFile As String
> Dim sFilePath As String
> Dim sFileName As String
> Static nChangeCount As Integer
>
> 'Test
> Debug.Print sFile & ":" & InStr(1, sFile, sChangeFrom)
>
> If InStr(1, sFile, sChangeFrom) > 0 Then
> nChangeCount = nChangeCount + 1
> Form1.lblChangeCount.Caption = nChangeCount
> End If
>
> Form1.lblCurrentFile.Caption = sFile
> Form1.Refresh
>
> 'Gem path og filnavn
> sFilePath = BMIFILE.ExtractPath(sFile, True)
> sFileName = BMIFILE.ExtractFile(sFile)
>
> 'Ændre kun filnavn store og små bogstaver
> sFileName = Replace(sFileName, sChangeFrom, sChangeTo)
> sFileName = Replace(sFileName, UCase(sChangeFrom), sChangeTo)
>
> 'Gem nyt navn
> sNewFile = sFilePath + sFileName
>
> 'Rename the current file
> Name sFile As sNewFile
>
> End Sub
>
>
> ahj@bminet.dk (Allan) wrote in message
news:<a9d9a699.0107060440.18284a97@posting.google.com>...
> > Hej Alle
> >
> > Jeg har lavet et lille program der rekursivt finder biblioteker og
> > underbiblioteker..
> >
> > Jeg bruger et rekursivt kald til at trave igennem alle biblioteker. Jeg
> > laver en exe-fil og herefter kører programmet, men virker det ikke. ex:
> > c:\test
> > - a
> > - aa
> > - b
> > - c
> > - ca
> >
> > c:\test c:\test\a og c:\test\aa bliver gennemgået men ikke c:\test\b
osv.
> >
> > Humlen er at programmet virker når jeg kører programmet i VB, men ikke
når
> > jeg kører det som en exe-fil.
> >
> > Håber i forstår hvad jeg mener!



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

Månedens bedste
Årets bedste
Sidste års bedste