lipon67
Messages postés8Date d'inscriptionsamedi 15 mai 2004StatutMembreDernière intervention 2 mai 2005
-
2 mai 2005 à 09:38
crenaud76
Messages postés4172Date d'inscriptionmercredi 30 juillet 2003StatutMembreDernière intervention 9 juin 2006
-
4 mai 2005 à 14:59
Salut à tous, je suis actuellement en stage de fin d'étude en réseau informatique, et il me manque les connaissances en programmation pour cloturer une partie de mon projet. Je vous explique le topo, mon programme VB doit effectuer les étapes suivantes :
- Copier une liste de fichier dispo sur mon réseau vers un répertoire en local :
tab = tabulation vu que le format TSV est en fait un fichier TXT avec l'option Tabulation Separated Values (d'où TSV).
On remarque aussi que sous NT4, Valeur1 est le 3ème membre de la ligne tandis que sous 2k/xp/2k3, on a d'une part des guillemets et d'autre part une date/heure qui ne font qu'un membre, ce qui ramène Valeur1 à la deuxieme place dans la ligne.
- affecter les variable :
Code:
,
----
ProPipo = Valeur1 'Charge processeur du serveur PIPO
MemPipo = Valeur2 'Mémoire Pages/sec du serveur PIPO
HddPipo = Valeur3 'Temps Disque du serveur PIPO
FrCPipo = Valeur4 'FreeSpace sur C: (serveur PIPO)
FrDPipo = Valeur5 'FreeSpace sur D: (serveur PIPO)
Je pense qu'on ne peut pas procéder avec une boucle pour la bonne et simple raison qu'il faut écrire les Valeur1...Valeur5 dans les variables ProPipo...FrDPipo avant de passer au fichier TSV suivant... dont les Valeur1...Valeur5 seront à inscrire dans d'autre variable vu que ces valeurs concernent un autre serveur...
Vu que sous NTSRV on n'a pas de guillemets et que sous 2kSRV/2k3SRV on en a, il faudra trouver les 'Valeur' et supprimer ensuite le premier et dernier caractère de 'Valeur' de 'valeur' si c'est un guillemet avec la fonction chr$(34).
PS : J'ai 8 serveurs à analyser donc une boucle peut aider mais n'est pas nécessaire.
- Générer une page HTML (j'y arrive) contenant le tableau dont une ligne est à écrire comme ceci :
Print EnTete as #1 'pour avoir le haut du tableau (je ne me souviens plus de la commande exacte)
Print PIPO as #1 'contenu d'une ligne
Print BasTableau as #1'cloture le tableau </TD>
Merci beaucoup pour votre aide
Lipon67
A voir également:
Copier fichier TXT / Aller Dernière Ligne / Trouver valeurs
lipon67
Messages postés8Date d'inscriptionsamedi 15 mai 2004StatutMembreDernière intervention 2 mai 2005 4 mai 2005 à 13:41
Ca y est, j'ai trouvé la solution !
Grâce aux nombreux posts sur le forum, aux sources disponibles sur le site (notamment http://www.vbfrance.com/code.aspx?ID=20794), et à l'aide de ceux qui ont bien voulu m'aider (crenaud76) j'ai réussi à écrire le code qu'il me fallait... il est là :
'************************************************************************************
' Fonction Asplit qui me servira à éclater ma ligne pour chercher les infos qu'il me faut
'************************************************************************************
Private Function ASplit(ByVal sWhat As String, ByRef sSeparators() As Variant) As Variant
Dim N As Long, L As Long
Dim vSep As Variant
Dim aOut() As Variant
ReDim aOut(0)
L = 1
For N = 1 To Len(sWhat)
For Each vSep In sSeparators
If Mid(sWhat, N, Len(CStr(vSep))) = CStr(vSep) Then
aOut(UBound(aOut)) = Mid(sWhat, L, N - L)
ReDim Preserve aOut(UBound(aOut) + 1)
L = N + 1
End If
Next
Next N
aOut(UBound(aOut)) = Mid(sWhat, L)
ASplit = aOut
End Function
'************************************************************************************
Private Sub Form_Load()
Dim texte As String 'sert à stocker le fichier tsv
Dim derligne As String 'recopie ma string texte pour la traiter
'Dim i As Long 'nécessaire si utilisation de la boucle mise en commentaire plus bas
'Dim T() As String 'nécessaire si utilisation de la boucle mise en commentaire plus bas
Open "c:\local.tsv" For Input As #22 'ouverture du fichier local.tsv pour la lecture
Do While Not EOF(22) 'jusqu'à la fin de mon fichier
Line Input #22, texte 'recopie la ligne en cours de lecture dans texte
Loop 'effectue la boucle --> texte contient alors la dernière ligne du fichier
derligne = texte 'utilisation de derLigne pour le traitement sur ma string
'MsgBox derligne 'pour vérifier en mode pas à pas que derLigne contient bien ce qu'on souhaite
'************************************************************************************
'boucle permettant d'afficher un après l'autre les champs de derligne (non utilisé donc commentaire)
'T = Split(derligne, Chr(34) + vbTab + Chr(34)) ' Eclate la ligne (séparateur guillemet tabulation guillemet)
'For i = 0 To UBound(T) ' Parcours tous les éléments du tableau
' MsgBox T(i) ' Affiche la i ème valeur de T, donc de la ligne
'(Attention, i commence à zéro)
'Next
'n'est pas utilisé dans mon programme car cette boucle donne la dernière valeur mais ne permet pas telle qu'elle est de stocker T(i) dans une variable différente à chaque passage dans la boucle
'************************************************************************************
'***** Utilisation de la fonction Asplit définie au début du code *****
Dim asSeparators() As Variant
Dim asTerms() As Variant
asSeparators = Array(Chr(34)) 'notre séparateur est "
asTerms = ASplit(derligne, asSeparators) 'ici on sépare derligne selon "
' renvoie :
MsgBox "FrCLocal : " + asTerms(3) 'nous donne le 3 ème membre de derligne (FreeSpace C)
MsgBox "FrDLocal : " + asTerms(5) 'FreeSpaceD
'***** Fin d'utilisation de la fonction Asplit *****
Close #22 'fermeture du fichier local.tsv
End Sub
___________________________
Pour tester mon code, il suffit de lancer l'analyseur de performance et de créer un journal de compteur. Ajouter les compteurs qu'il vous faut. Dans le format d'enregitrement, il faut mettre TSV (données séparées par tabulations). Ensuite il faut remplacer "c:\local.tsv" par l'emplacement de votre fichier TSV...
___________________________
Merci encore à tous ceux qui m'ont aidé... également à quelques membres de www.developpez.com où j'avais mis le même post !
lipon67
Messages postés8Date d'inscriptionsamedi 15 mai 2004StatutMembreDernière intervention 2 mai 2005 2 mai 2005 à 11:30
Replace (maDerniereLigne, """, "")
me permet de virer les guillemets dans une chaine de caractère... donc il me supprime tous les guillemets dans ma derniere ligne, de ce fait, la date et l'heure ne font plus un mais deux éléments. En passant par cette opération, on a converti un TSV généré sous 2k/2k3 au même format qu'un TSV généré sous NT... et ça nous simplifie le reste du programme... mais c'est toujours trop compliqué pour moi.
Dès que je trouve une solution, je la balance sur mon topic, comme ça les gens qui veulent m'aider savent à quel niveau j'en suis.
crenaud76
Messages postés4172Date d'inscriptionmercredi 30 juillet 2003StatutMembreDernière intervention 9 juin 200628 2 mai 2005 à 17:25
Il doit te manquer des notions sur la fonction Split(), qui te permet d'éclater une ligne selon un séparateur donné (la tabulation pour toi) dans un tableau .
Ex :
Dim T() as string ' Déclare un tableau de string
Dim i as Long
T = Split(LaLigneàEclater, vbTab) ' Eclate la ligne
For i = 0 to UBound(T) ' Parcours tous els item du tableau
Msgbox T(i) ' Affiche la i ème valeur de T, donc de la ligne
'(Attention, i commence à zéro)
Next
Voila de quoi avancé un peu plus ...
Christophe R
Vous n’avez pas trouvé la réponse que vous recherchez ?
crenaud76
Messages postés4172Date d'inscriptionmercredi 30 juillet 2003StatutMembreDernière intervention 9 juin 200628 4 mai 2005 à 14:59
Pense à mettre une "réponse Accepté", histoire que le post passe en vert, cela facilite les recherche pour de futurs visiteurs du forum qui aurait le même problème que toi à la base ...