salve,
stamattina stavo modificando una dll fatta in vb6, in collaborazione col mio titolare, che io non toccavo da 2 anni. mi è scappata per puro caso la coda dell'occhio su due sub (nuove funzionalità aggiunte 5 mesi fà) che, a mio parere, violano un bel pò di design-pattern. da uno che, cito le sue parole: "è da 20 anni che è nel mondo della programmazione. ho cominciato quando ancora si programmava in basic" e ancora: "ho nostalgia di quegli anni. almeno un tempo gli dicevi di fare xyz e loro facevano xyz senza tanti patemi. i linguaggi moderni (VB6 -.-) devi fare 100 debug e continuare a correggere errori su errori per poterli far funzionare maledetta Microsoft" non me l'aspettavo.
appena ho visto questo ho capito che non era il programma ad avere problemi ed errori. il problema è lui.
ditemi voi se è una mia illusione o se devo parargli dicendogli di andare a imparare a programmare un pò più seriamente anche perchè poi questa dll ha intenzione di venderla e non vorrei rovinarmi la reputazione a costo di dimettermi dal posto di lavoro.
codice:
Sub ProfiloPath(Optional StrDest As String = "", Optional SwAgg As Boolean = False)
Dim FSO As Scripting.FileSystemObject, Fo As Object, Fi As File, StrSize As Long, Nv As Integer, Nt As Integer, Pro As String, Dat As Date
On Error Resume Next
Set FSO = New Scripting.FileSystemObject
Set Fo = FSO.GetFolder(Environ("APPDATA") & "\Microsoft\Outlook")
If Fo Is Nothing Then Exit Sub
StrDest = Environ("HOMESHARE")
If Len(Trim(StrDest)) = 0 Then StrDest = Environ("USERPROFILE")
StrDest = StrDest & "\ImpostazioniOutlook"
If Dir(StrDest, vbDirectory) = "" Then
MkDir (StrDest)
For Each Fi In Fo.Files
Fi.Copy StrDest & "\" & Fi.Name
Next
GoTo Fine
End If
SwAgg = True
If Len(Trim(Profilo)) > 0 Then
For Each Fi In Fo.Files
Select Case Fi.Name
Case Profilo & ".xml"
Pro = Profilo & ".xml"
GoSub Verifica
Case Profilo & ".NK2"
Pro = Profilo & ".NK2"
GoSub Verifica
Case Profilo & ".srs"
Pro = Profilo & ".srs"
GoSub Verifica
Case "OutPrnt"
Pro = "OutPrnt"
GoSub Verifica
Case "Outcmd.dat"
Pro = "Outcmd.dat"
GoSub Verifica
End Select
Next
If Nv = Nt Then SwAgg = False
End If
Fine:
Set Fi = Nothing
Set Fo = Nothing
Set FSO = Nothing
Exit Sub
Verifica:
Nv = Nv + 1
StrSize = Fi.Size
Set Fi = Nothing
Set Fi = FSO.GetFile(StrDest & "\" & Pro)
If Not Fi Is Nothing Then
If Round((Fi.Size / 1000), 0) = Round((StrSize / 1000), 0) Then Nt = Nt + 1
End If
Return
End Sub
Sub OutlookImpostazioni(Tipo)
Dim StrDest As String
If Dir(Environ("ProgramFiles") & "\DLL Outlookcom\OutImpostazioni.exe") = "" And Tipo = "C" Then
MsgBox "Manca l'applicazione per il salvataggio dei dati !!"
Exit Sub
End If
On Error Resume Next
Call ProfiloPath(StrDest)
If Len(Trim(Profilo)) > 0 Then
If MsgBox("Attenzione: Outlook verrà riavviato. Continuo ?", vbInformation + vbYesNo, "Salvataggio impostazioni Outlook") = vbYes Then
If Tipo = "S" Then
Shell Environ("ProgramFiles") & "\DLL Outlookcom\OutImpostazioni.exe S;" & Profilo & ";" & StrDest, vbNormalFocus
golMyApp.Quit
Else
If Dir(StrDest & "\" & Profilo & ".xml") <> "" Then
Shell Environ("ProgramFiles") & "\DLL Outlookcom\OutImpostazioni.exe C;" & Profilo & ";" & StrDest, vbNormalFocus
golMyApp.Quit
Else
MsgBox "Attenzione: Non esiste alcun file salvato di impostazioni personali da caricare !!"
End If
End If
End If
Else
MsgBox "Profilo non trovato !!"
End If
End Sub
andando a indagare più a fondo in una classe noto anche questa orrida cosa:
codice:
Public Property Get PubFolder() As String
PubFolder = NomePublicFolder
End Property
Public Property Get AllPFolder() As String
AllPFolder = AllPF
End Property
Public Property Get Preferite() As String
Preferite = Pref
End Property
Public Property Get CassPostale() As String
CassPostale = CasPost
End Property
Public Property Get UtenteWindows() As String
UtenteWindows = Utente
End Property
Public Property Get UtenteMapi() As String
UtenteMapi = UtenteMapi
End Property
Public Property Get ProfiloOutlook() As String
ProfiloOutlook = Profilo
End Property
Sub PropOut(Optional Pf As String = "", Optional AllPFo As String = "", Optional Pre As String = "", Optional CP As String = "", Optional UtW As String = "", Optional UtM As String = "", Optional Prof As String = "")
Pf = NomePublicFolder
AllPFo = AllPF
Pre = Pref
CP = CasPost
UtW = Utente
UtM = UtenteMapi
Prof = Profilo
End Sub