Hunterhive
-
2 nov. 2012 à 11:42
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018
-
7 nov. 2012 à 08:32
bonjour, je savais pas ou placer ce sujet donc je le met là.
Donc voila on me demande de programmer dans une vieille version de VB, c'est a dire visual basic 5.
j'ai un fichier inp (abaqus) qui regroupe de nombreux coordonnés de points listé selon le modèle: 1 0.5 0.4
2 1.2 95.1 etc
Donc j'ai écrit des ligne de code permettant de lire le fichier ligne par ligne :
fr = FreeFile()
cmd1.Filter = "Images (*.inp)|*.inp|"
cmd1.ShowOpen
Dim T() As String
Open cmd1.filename For Input As #fr
i = 0
While Not EOF(fr)
ReDim Preserve T(i)
Line Input #fr, T(i)
Debug.Print T(i)
i = i + 1
Wend
j'ai également programmé la fonction split (inexistante dans vb 5) elle marche j'ai essayer sur des exemple simple.
Mon problème maintenant c'est que j'arrive pas a l'utiliser pour récupéré les coordonné des point qui se trouvent dans mon fichier inp afin de les tracer sur ma picture box. Si quelqu'un peut m'aider se serait sympa merci !
cordialement
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018211 7 nov. 2012 à 08:32
Maintenant (ce matin) et bien que tous les substituts possibles pour VB5 de la fonction Split de VB6 que le moteur de recherche de ce forum t'aura permis de découvrir feraient parfaitement l'affaire :
-- plus "généraux" (entendons par là : pouvant "éclater" quelle que soit la longueur du séparateur), ils seront forcément également plus lents.
-- or, dans le cas de figure exposé (séparateur espace unique), tu pourras trouver un intérêt à traiter directement la chaîne de caractères de ùanière nettement plus rapide, ainsi, par exemple :
toto = "acxxxxxxxxxxxxxxxx ab c d e fac ab c d e fac ab c d e fac ab c d e f"
Dim titi() As Byte
titi = StrConv(toto, vbFromUnicode)
ReDim tata(UBound(titi)) As String
ou = 0
For i = 0 To UBound(titi)
If titi(i) <> 32 Then
tata(ou) = tata(ou) & Chr(titi(i))
Else
ou = ou + 1
End If
Next
ReDim Preserve tata(ou)
'''' PREUVE
For i = 0 To UBound(tata)
MsgBox tata(i)
Next
(environ 6 fois plus rapide, mais pour un seul caractère de séparation)
A toi de voir, donc :
- soit (notamment si tu dois te servir souvent d'éclatements divers de chaînes) un substitut complet de la fonction split de VB6
- soit (si éclatements rares ou toujours avec un seul caractère de séparation) : une procédure ad hoc telle que montrée plus haut
- soit enfin les deux, à savoir :
--- une fonction de substitution (pour les autres cas éventuels)
--- la procédure très rapide montrée plus haut pour les cas de caractère unique de séparation. C'est ce que je ferais si, notamment, le nombre de lignes à traiter de mon fichier était très élevé (gain de temps d'exécution alors appréciable).
A toi de voir, donc, et de choisir selon le cas.
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
NHenry
Messages postés15117Date d'inscriptionvendredi 14 mars 2003StatutModérateurDernière intervention10 mai 2024159 4 nov. 2012 à 03:19
Bonjour,
"Mon problème maintenant c'est que j'arrive pas a l'utiliser pour récupéré les coordonné des point"
Comment récupères-tu les coordonnées, ce n'est pas montré dans ton exemple (pas d'appel à la fonction Split) ?
---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, celui-ci pour bien poser votre question ou encore celui-ci pour les PFE et autres exercices.[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : ).[*]En VB.NET pensez à activer Option Explicit et Option Strict (propriété du projet) et à retirer l'import automatique de l'espace de nom Microsoft.VisualBasic (onglet Références dans les propriétés du projet).[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés/list ---
Mon site
merci de votre aide, sinon la méthode pour récupérer les coordonnés des points n'est pas montré car c'est ce que je n'arrive pas à faire. j'ai programmé une fonction split car c'est ce qu'on m'a dit de faire mais je n'arrive pas à l’exploiter dans la lecture de mon fichier abaqus afin de sortir un tableau avec le numéro du point son abscisse et son ordonné.
pour ce qui est des lignes
1 0.5 0.4
2 1.2 95.1
etc
elles correspond à la représentation des points dans le fichier inp, c'est a dire sur une même ligne on a le numéro du point son abscisse et son ordonné séparer par un espace.
Vous n’avez pas trouvé la réponse que vous recherchez ?
NHenry
Messages postés15117Date d'inscriptionvendredi 14 mars 2003StatutModérateurDernière intervention10 mai 2024159 6 nov. 2012 à 13:35
Bonjour,
Utilises la fonction Split avec comme séparateur, l'espace.
Ensuite, dans le tableau retourné, tu auras 3 cases (0 à 2) qui contiendront les 3 éléments de ta ligne.
Après, à toi de traiter les 3 éléments.
---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, celui-ci pour bien poser votre question ou encore celui-ci pour les PFE et autres exercices.[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : ).[*]En VB.NET pensez à activer Option Explicit et Option Strict (propriété du projet) et à retirer l'import automatique de l'espace de nom Microsoft.VisualBasic (onglet Références dans les propriétés du projet).[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés/list ---
Mon site
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018211 6 nov. 2012 à 22:09
Bonjour,
La fonction Split étant inconnue sous VB5, il va te falloir traiter toi-même la chaîne de caractères, ou écrire une fonction de remplacement.
Pour ton info : tu trouveras sur ce forum (qui possède un moteur de recherche, de quoi écrire sous VB5 de quoi remplacer la fonction Split de VB6.
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ