Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1868 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Comment retirer les espace entre 2 char

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Comment retirer les espace entre 2 char

n°138496
rasta_cana
Peace and Frag
Posté le 14-05-2002 à 09:24:01  profilanswer
 

j ai un fichier txt de se type  
/ljdflkjsdjgl/                   /fdgdkjghkh/           /dfldsjglkj/        /fdkhhgkjd/
les char / permette de determiner le debut et la fin  
Dans le but de faire un premier traitement il faudrait ke je suppr tout les /  (vide)     / pour obtenir un txt au final de se type
/ljdflkjsdjgl//fdgdkjghkh//dfldsjglkj//fdkhhgkjd/
Merci a celui ki trouvera une solution thx

mood
Publicité
Posté le 14-05-2002 à 09:24:01  profilanswer
 

n°138503
rasta_cana
Peace and Frag
Posté le 14-05-2002 à 09:27:33  profilanswer
 

Scuzé moi c est du VB.

n°138510
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 14-05-2002 à 09:41:58  profilanswer
 

Dim Caractere
Open "FichierSource" for input as #1
Open "FichierDest" for output as #2
 
 
Do while not EOF(1)
   Caractere=Input(1,#1)
   If Caractère <> " " Then  
     Put #2, Caractere
   End If
Loop
 
Close #2
Close #1
 
Je t'ai pondu ce code en direct sans tester, il est possible qu'il contienne des erreurs. Teste et corrige le cas échéant.
 
A+

 

[jfdsdjhfuetppo]--Message édité par Harkonnen le 14-05-2002 à 10:09:20--[/jfdsdjhfuetppo]


---------------
J'ai un string dans l'array (Paris Hilton)
n°138541
rasta_cana
Peace and Frag
Posté le 14-05-2002 à 10:28:13  profilanswer
 

je vais tester sa je te remerci man
@++ et au prochain pb

n°138545
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 14-05-2002 à 10:30:36  profilanswer
 

à ton service Doc  :lol:  :lol:  
 
 [:yamusha]


---------------
J'ai un string dans l'array (Paris Hilton)
n°138551
rasta_cana
Peace and Frag
Posté le 14-05-2002 à 10:40:24  profilanswer
 

le put ne marche pas mais il est peut etre mal declaré je n ais pas encore regarder par contre le code ne supprime pas tt les espace?? car il existe des espace des les /dsgfdg fdgfd/          /fdgfdg gfdgfdg/
Je veut vraiment suppr kes les zones ou j ai / (vide)   /
Voilou

n°138559
rasta_cana
Peace and Frag
Posté le 14-05-2002 à 10:48:35  profilanswer
 

le mieux ke je pourrait faire c est de lire mon txt si je trouve un / je vasi automatiquement au suivant si se ki se trouve entre 2/ est un champ vide alors je supprime sinon je laisse tel kel
Mais je suis un n00b du codage

n°138569
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 14-05-2002 à 11:01:44  profilanswer
 

Autant pour moi, c'est pas Put #2, Caractere, mais Print #2, Caractere
 
Par contre, ce code supprime tous les espaces. Si la séparation entre tes /     / est une tabulation, alors remplace l'espace par le code ASCII du TAB, sinon il va falloir modifier le programme pour qu'il ne supprime les espaces qu'à partir du / et jusqu'au / suivant.


---------------
J'ai un string dans l'array (Paris Hilton)
n°138578
rasta_cana
Peace and Frag
Posté le 14-05-2002 à 11:23:16  profilanswer
 

c est bon j ai trouver
 
Private Sub Command1_Click()
'Déclaration des variables locales
    Dim Msg As String, msg2 As String
    Dim Ind As Long, Ind2 As Long
 
'Initialisation des variables
    Msg = "/ljdv flkj sdjgl/    /fd gdk  j ghkh/ /fgdf fgd dfgd / /fdk  hh g kjd/"
 
'Boucle de supression des espaces
    Ind = InStr(Msg, "/" )'je determine la position du premier /
    Ind2 = InStr(Ind+1, Msg, "" ) 'Je determine la position du second / je le fait demarrer a ind+1 pour pas que ind=ind2
    msg2 = Mid$(Msg, Ind, Ind2 - Ind+1)
    MsgBox (msg2)
End Sub
Voila c est tout bete merci a ceux qui m ont aider mon per ma moman... et tout mes poto internaute

n°138582
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 14-05-2002 à 11:26:18  profilanswer
 

Dim Caractere
Open "FichierSource" for input as #1
Open "FichierDest" for output as #2
 
Do while not EOF(1)
   Caractere=Input(1, #1)      ' on lit un caractere
   If Caractere <> "/" Then    ' différent de "/" => on l'écrit
      Print #2, Caractere
   Else                        ' sinon
      Print #2, Caractere      ' on l'écrit
      Caractere=Input(1, #1)   ' caratere suivant
      Do while Caractere = "/" ' on lit les caracteres entre /
         Caractere=Input(1, #1)
      Loop
      Print #2, Caractere      ' on ecrit le / terminal
   End If
Loop
 
Close #2
Close #1
 
Ca devrait être bon. Ce source n'est pas optimisé, possède de nombreuses redondances, mais il te permet de voir les différentes étapes de l'algo.
 
A+


---------------
J'ai un string dans l'array (Paris Hilton)
mood
Publicité
Posté le 14-05-2002 à 11:26:18  profilanswer
 

n°138583
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 14-05-2002 à 11:26:59  profilanswer
 

Dim Caractere
Open "FichierSource" for input as #1
Open "FichierDest" for output as #2
 
Do while not EOF(1)
   Caractere=Input(1, #1)      ' on lit un caractere
   If Caractere <> "/" Then    ' différent de "/" => on l'écrit
      Print #2, Caractere
   Else                        ' sinon
      Print #2, Caractere      ' on l'écrit
      Caractere=Input(1, #1)   ' caratere suivant
      Do while Caractere = "/" ' on lit les caracteres entre /
         Caractere=Input(1, #1)
      Loop
      Print #2, Caractere      ' on ecrit le / terminal
   End If
Loop
 
Close #2
Close #1
 
Ca devrait être bon. Ce source n'est pas optimisé, possède de nombreuses redondances, mais il te permet de voir les différentes étapes de l'algo.
 
A+


---------------
J'ai un string dans l'array (Paris Hilton)
n°138587
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 14-05-2002 à 11:31:37  profilanswer
 

Putain, j'avais oublié cette fonction InStr.... c'est vrai qu'elle est bien pratique !


---------------
J'ai un string dans l'array (Paris Hilton)
n°138595
Carbon_14
Posté le 14-05-2002 à 12:47:44  profilanswer
 

Si la rapidité est critique, il peut être utile de comparer la célérité des deux codes sur les fichiers à traiter.  
Les accès Mid$() en VB3 étaient assez lents :(.

n°138623
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 14-05-2002 à 14:18:06  profilanswer
 

A voir, effectivement...
 
voici une version un peu moins redondante :
 
Dim Caractere
Open "FichierSource" for input as #1
Open "FichierDest" for output as #2
 
Do while not EOF(1)
  Caractere=Input(1, #1)      
  If Caractere = "/" Then
     Print #2, Caractere    
     Caractere=Input(1, #1)    
     Do while Caractere <> "/"  
        Caractere=Input(1, #1)
     Loop
  End If
  Print #2, Caractere
Loop
 
Close #2
Close #1
 
On a du gagner quelques cycles machine...
 
J'ai un doute la : en VB, l'opérateur de comparaison c'est = ou == ?

 

[jfdsdjhfuetppo]--Message édité par Harkonnen le 14-05-2002 à 14:21:56--[/jfdsdjhfuetppo]


---------------
J'ai un string dans l'array (Paris Hilton)
n°138695
Carbon_14
Posté le 14-05-2002 à 15:35:45  profilanswer
 

En VB, = assigne et compare, d'où des risques d'erreurs quand on passe au C (j'y fait tj très attention pour pas avoir des if (A = B) à la VB en C).

n°138713
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 14-05-2002 à 15:50:11  profilanswer
 

C'est pour ça que je pose la question, je code en C++ 99% du temps, et j'utilise VB le 1% restant quand je suis pressé.
 
Ce qui explique d'ailleurs l'aspect "C" de mon source :)


---------------
J'ai un string dans l'array (Paris Hilton)
n°138725
Carbon_14
Posté le 14-05-2002 à 16:13:04  profilanswer
 

Le (V)Basic, c'est bien car rapide à mettre en oeuvre (généralement), mais prendre de bonnes habitudes de lisibilité ne nuit jamais, ca facilite la lecture et aide la compréhension :D .
 
Après le FORTRAN, j'ai tâté du TBasic et QuickBasic/DOS, VB3 plus tard, et maintenant BorlandC uniquement (plus optimisable/rapide/pénible aussi) :).
 
Maintenant, il a tout pour réussir !

n°138735
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 14-05-2002 à 16:23:59  profilanswer
 

Voila exactement ce qui m'énerve en VB :

Citation :


Dim Caractere  


 
J'ai oublié de spécifier le type, et ça a du être accepté quand même car il l'a typé en Variant...
 
Le parfait exemple de mauvaise habitude qu'on prend (trop) facilement.
 
Variant  :gun:


---------------
J'ai un string dans l'array (Paris Hilton)
n°138746
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 14-05-2002 à 16:40:54  profilanswer
 

Euh, je viens de me rendre compte d'un truc dans mon source...
 
J'avance jamais dans le fichier, je lis toujours le 1er caractère !!!
 
ptdr :lol:


---------------
J'ai un string dans l'array (Paris Hilton)
n°139061
Carbon_14
Posté le 15-05-2002 à 09:58:16  profilanswer
 

En l'ouvrant en binaire, avec des Get, Put et Seek pour se déplacer..

n°139068
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 15-05-2002 à 10:05:02  profilanswer
 

Oui, mais ce que je voulais dire c'est que j'avais complètement oublié de me déplacer dans le fichier, je me suis focalisé sur la recherche de la chaine en oubliant de me déplacer dans le texte  :lol:  :lol:


---------------
J'ai un string dans l'array (Paris Hilton)
mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Comment retirer les espace entre 2 char

 

Sujets relatifs
[XML] retirer un commentaire d'un Document[JS]je doit convertir un int en char, comment faire?
[C++] delete d'un char***[C] Couille quand je modifie un char d'une structure
Comment convertir long int -> chaine de char ?[ free.fr ] besoin d espace
[C] Récupérer espace disque[c++] Est il possible de convertir une CString en Char ou vice versa?
[DEPLHI 4] Urgent :) HotKey + WM_CHAR = probleme :(, aidez moi[C] espace dans une chaine de caractere
Plus de sujets relatifs à : Comment retirer les espace entre 2 char


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR