Help visual basic 5 [Résolu]

- - Dernière réponse : ucfoutu
Messages postés
18039
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
Afficher la suite 

Votre réponse

6 réponses

Meilleure réponse
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
267
3
Merci
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

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 141 internautes nous ont dit merci ce mois-ci

Commenter la réponse de ucfoutu
Messages postés
14444
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
19 mai 2019
158
0
Merci
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
Commenter la réponse de NHenry
Messages postés
1270
Date d'inscription
mardi 11 novembre 2003
Statut
Membre
Dernière intervention
24 juillet 2013
7
0
Merci
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
Commenter la réponse de cs_Galain
0
Merci
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.
Commenter la réponse de Hunterhive
Messages postés
14444
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
19 mai 2019
158
0
Merci
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
Commenter la réponse de NHenry
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
267
0
Merci
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
Commenter la réponse de ucfoutu

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.