Help visual basic 5

Résolu
Hunterhive - 2 nov. 2012 à 11:42
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 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

6 réponses

ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
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
3
NHenry Messages postés 15117 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 10 mai 2024 159
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
0
Profil bloqué
4 nov. 2012 à 12:19
Salut
Même remarque que NHenry
De plus
1 0.5 0.4
2 1.2 95.1

Que signifient exactement ces lignes de coordonnées ? Y a t'il des virgules dans les coordonnées !


La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi.

GRENIER Alain
0
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.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
NHenry Messages postés 15117 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 10 mai 2024 159
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
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
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
0
Rejoignez-nous