Zylott
Messages postés104Date d'inscriptionjeudi 25 juillet 2002StatutMembreDernière intervention28 septembre 2006
-
31 mai 2006 à 22:09
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 2018
-
2 juin 2006 à 17:49
Bonjour,
mon programme compte environ 350 classes que je souhaite transferer dans une DLL. Je dois donc declarer l'instance des classes (Instancing en multiuse).
Je voudrais savoir s'il existe un add-in (ou un prog) permettant de changer , lister toutes les classes et leur mettre Instancing =MultiUse automatiquement ?
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201847 1 juin 2006 à 01:08
salut,
la seule différence apparente est "Attribute VB_Exposed" (false en exe, dll en activex)
créé un nouveau projet exe
sur la form (assez grande), pose un listbox (grande aussi) et un bouton (pas trop lui)
Option Explicit
'
Private Sub Form_Load()
Me.OLEDropMode = 1
List1.Clear
End Sub
'
Private Sub Form_OLEDragDrop(Data As DataObject, Effect As Long, Button As Integer, Shift As Integer, X As Single, Y As Single)
Dim sFile As Variant
For Each sFile In Data.Files
If RightB$(LCase$(sFile), 8) = ".cls" Then List1.AddItem sFile
Next
End Sub
'
Private Sub Command1_Click()
If List1.ListCount > 0 Then
Dim aFiles() As String, i As Integer
ReDim aFiles(1 To List1.ListCount)
Me.Enabled = False 'pour pas glisser chef :p
For i = 1 To List1.ListCount
' sauve l'ancien + tableau
aFiles(i) = List1.List(i - 1)
Me.Caption = "Sauve " & i & "/" & List1.ListCount
FileCopy aFiles(i), aFiles(i) & ".BAK"
DoEvents
Next i
List1.Clear
' j'préfère faire en 2 boucles, au cas où (au moins tout est déjà sauvé).....
Dim FF As Integer, sBuffer As String
Dim sBig$, sEnd$, lPos As Long
For i = 1 To UBound (aFiles)
' récup contenu class
FF = FreeFile
Open aFiles(i) For Input As #FF
sBuffer = Input (LOF(FF), #FF)
Close #FF
' trouve la ligne
lPos = InStr(1, sBuffer, "Attribute VB_Exposed = False")
If lPos = 0 Then
' pas trouvé
List1.AddItem aFiles(i) & vbTab & vbTab & "INDEMNE"
Else
sBig = Left$(sBuffer, lPos - 1)
sEnd = Right$(sBuffer, Len (sBuffer) - lPos - 29)
' on écrit
FF = FreeFile
Open aFiles(i) For Output As #FF
Print #FF, sBig & "Attribute VB_Exposed = True" & vbCrLf & sEnd
Close #FF
List1.AddItem aFiles(i) & vbTab & vbTab & "MODIFIé"
End If
sBuffer = vbNullString
Me.Caption = "Fichier " & i & "/" & UBound (aFiles) & " traité"
DoEvents
Next i
Command1.Enabled = False
Me.Enabled = True
End If
End Sub
copie ce code, lance, déplace tes fichiers (drag and drop) sur la form (pas la listbox), même avec quelques intrus c'est pas grave...
puis click sur le seul bouton.
j'ai testé c'est ok mais bon, vérifie quand même...
et au pire, c'est sauvé (****.BAK)
cs_rt15
Messages postés3874Date d'inscriptionmardi 8 mars 2005StatutModérateurDernière intervention 7 novembre 201413 31 mai 2006 à 22:36
Bonjour,
Tu peux peut être travailler au niveau des fichiers (Faire un prog qui modifie les fichiers source).
Je peux malheureusement pas essayer là tout de suite, mais si tu édite
avec notepad le fichier d'une classe d'un exe et celui d'une classe
d'une dll, tu devrais pouvoir lister les différences, et savoir quelles
modifs tu dois effectuer.
Par contre, je te conseil de faire une copie de sauvegarde avant d'essayer de faire des modifs !
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201847 2 juin 2006 à 17:49
même si tu as 10 dossiers, tu n'as même pas à sélectionner que les .cls
tu glisses tous les fichiers et c'est parti
bout de code complet ;)
je me le suis d'ailleurs gardé (ensuite) pour les .vbp (description, titre, signature,etc....) en masse. bien pratique pour les groupes de projets conséquents.