Page 1 sur 1

Découper une chaîne Binaire en tronçon

Publié : mar. 18/nov./2014 19:05
par Lord Nelson
Bonsoir,

Voilà, je cherche à faire ceci:

Découper une chaîne Binaire en tronçon de cette façon-ci (Je ne sais pas comment ont appel ça)
1011010010011101100001011101010001101010011110101001010101010101010010010011101100101100
Après découpe = 10 110 100 100 1110 110000 10 1110 10 1000 110 10 100 11110 10 100 10 10 10 10 10 10 10 100 100 100 1110 1100 10 1100
J'ai fais se code pour faire se que je voulais, j'aimerais l'optimiser en travaillant pourquoi pas en mémoire, car Mid() est lent avec les grand chaînes et aussi ajouter une chaîne à une autre
Alors je me dis que travailler directement en mémoire serais bien plus rapide, vous en pensez quoi ?, comment faire ?

Comment optimiser se code au maximum ?:

Code : Tout sélectionner

; Découpe une chaîne binaire en tronsson, la chaîne binaire doit forcement commencer par un "1"
Procedure.s DecoupeBin(Bin$)
  
  SaveBin$ = Bin$
  
  ; Vérification de la chaîne binaire pour voir s'il elle commance par un "1".
  If Not Mid(Bin$, 1, 1) = "1"
    MessageRequester("Erreur dans la chaîne binaire...", "      La chaîne binaire doit commencer par un " + Chr(34) + "1" + Chr(34) + " !", 68)
    End
  EndIf
  
  ; Vérification de la chaîne binaire pour voir s'il elle contient uniquement des 0 et des 1.
  For Index = 1 To Len(Bin$)
    
    Caractere$ = Mid(Bin$, Index, 1)
    
    If Caractere$ <> "0" And Caractere$ <> "1"
      MessageRequester("Erreur dans la chaîne binaire...", "      La chaîne binaire doit comporter uniquement des 0 et des 1 !", 68)
      End
    EndIf
    
  Next
  
  Repeat
    
    If Len(Bin$) > 1
      
      If Mid(Bin$, 2, 1) = "0"
        Index = FindString(Bin$, "1", 2)
        
        If Index > 0
          Buffer$ = Mid(Bin$, 1, Index - 1)
        Else
          Buffer$ = Mid(Bin$, 1)
        EndIf
        
      ElseIf Mid(Bin$, 2, 1) = "1"
        
        For Index = 3 To Len(Bin$)
          
          Caractere$ = Mid(Bin$, Index, 1)
          
          If Caractere$ = "1"
            Continue
            
          ElseIf Caractere$ = "0"
            
            For Index = Index To Len(Bin$)
              
              Caractere$ = Mid(Bin$, Index, 1)
              
              If Caractere$ = "0"
                Continue
                
              ElseIf Caractere$ = "1"
                Break 2
                
              EndIf
              
            Next
            
          EndIf
          
        Next
        
        Buffer$ = Mid(Bin$, 1, Index -1)
        
      EndIf
      
    Else
      Buffer$ = Bin$
      
    EndIf
    
    BinDecoupe$ + Buffer$ + " "
    Position + Len(Buffer$)
    
    Buffer$ = ""
    
    Bin$ = Mid(Bin$, Index)
    
  Until Position = Len(SaveBin$)
  
  ProcedureReturn Mid(BinDecoupe$, 1, Len(BinDecoupe$) - 1)
  
EndProcedure

Bin$ = "111111100000001111010010011101100001011101010001101010011110101001010101010101010010010011101100101100"
Debug DecoupeBin(Bin$)

Bin$ = "10110100100111011000010111010100011010100111101010010101010101010100100100111011001011001"
Debug DecoupeBin(Bin$)

Bin$ = "1000001111110100011110111111100001010111110001111010000010101111011010100011110101001101001011010111010"
Debug DecoupeBin(Bin$)

Re: Découper une chaîne Binaire en tronsson

Publié : mar. 18/nov./2014 19:50
par falsam
Un indice qui te montre comment décomposer plus facilement.

Code : Tout sélectionner

Buffer$ = "1011010010011101100001011101010001101010011110101001010101010101010010010011101100101100"
Bin$ = ReplaceString(Buffer$, "01", "0 1")

Debug bin$
ça va être plus facile pour décomposer ton "bin$" (Je n'ai pas dit binz hein ?)

pour le reste débrouille toi avec StringField :)

Re: Découper une chaîne Binaire en tronsson

Publié : mar. 18/nov./2014 19:56
par Lord Nelson
Terrible :)

Tsss :roll: , dire que faut toujours que je cherche compliquer alors
que certain trouve super simple, sérieux, j'ai la honte là :oops:

Merci beaucoup Falsam :wink: :)

Re: Découper une chaîne Binaire en tronsson

Publié : mar. 18/nov./2014 21:37
par graph100
tronçon ...

Modifie ton titre de message s'il te plait.
Et active la correction orthographique de ton navigateur, au minimum