IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB 6 et antérieur Discussion :

fonction pour scinder un tableau en plusieurs parties


Sujet :

VB 6 et antérieur

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    HoB
    HoB est déconnecté
    Membre confirmé
    Homme Profil pro
    Consultant CRM
    Inscrit en
    Mai 2004
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultant CRM
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2004
    Messages : 58
    Par défaut fonction pour scinder un tableau en plusieurs parties
    Bonjour à tous,

    je cherche une fonction qui permet de couper un tableau pour obtenir plusieurs sous tableaux de la meme taille.
    j'ai trouvé la fonction Array.copy(sourceArray As Array, sourceIndex As Integer, destinationArray As Array, destinationIndex As Integer, length As Integer) qui prend length elements du tableauSourceArray à partir de l'index SourceIndex et les copie dans le tableau DestinationArray à l'index destinationIndex, mais le problèmem c'est que ca fonctionne en vb.net et pas en vb6.
    vous ne connaitriez pas un equivalent ? ou un algo assez optimisé pour le faire ?

    je dois faire un programme qui scinde des fichier de donnée en plusieurs partie et comme ces fichiers contiennent des millions d'enregistrements ca m'arrangerais d'avoir une fonction qui soit plus optimisé qu'une boucle de recopie

    merci d'avance pour vos reponse

  2. #2
    Rédacteur
    Avatar de DarkVader
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    2 131
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 131
    Par défaut
    Citation Envoyé par HoB Voir le message
    Bonjour à tous,
    .../...
    je dois faire un programme qui scinde des fichier de donnée en plusieurs partie et comme ces fichiers contiennent des millions d'enregistrements ca m'arrangerais d'avoir une fonction qui soit plus optimisé qu'une boucle de recopie
    .../..
    En tout état de cause pour un résultat véritablement optimisé,
    je ne vois pas le faire en VB (... ni même en VB.net)

  3. #3
    Expert confirmé
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 132
    Par défaut
    qui prend length elements du tableauSourceArray à partir de l'index SourceIndex et les copie dans le tableau DestinationArray à l'index destinationIndex
    moi j'ai bien une petite idée , mais (ce fameux mais) tout depend de ce que contient ton tableau, peux-tu nous mettre 2 ou 3 elements (pas plus) de ce tableau, ou du fichier de donnée ?
    Sans boucle For ... Next, j'ai un bout de source pense-bête qui pourrai eventuellement être utilisé.
    :whistle:pourquoi pas, pour remercier, un :plusser: pour celui/ceux qui vous ont dépannés.
    saut de ligne
    OOOOOOOOO👉 → → Ma page perso sur DVP ← ← 👈

  4. #4
    Membre Expert
    Avatar de Delbeke
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    2 675
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 2 675
    Par défaut
    Peut être l'algo de tronçonnage des séquences ADN?

  5. #5
    HoB
    HoB est déconnecté
    Membre confirmé
    Homme Profil pro
    Consultant CRM
    Inscrit en
    Mai 2004
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultant CRM
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2004
    Messages : 58
    Par défaut
    Bonjour à tous,

    deja merci pour vos reponse.

    en fait mon fichier de donnée contient une liste de ROW_ID db2, donc ca donne un truc dans ce genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    ROW_ID         
    ---------------
    1-2U2DVW       
    1-2U2DVY       
    1-2U2DW0       
    1-2U2DW2       
    1-2U2DW4       
    1-2U2DW6
    cette liste me permettra ensuite d'acceder aux enregistrements correspondants dans la base dans un second traitement : dans ce second traitement je me connecte a notre progiciel pour migrer toutes les données client. c'est pour pouvoir parraleliser le second traitement qui est tres long que j'ai besoin de scinder mon fichier.

    j'etais parti sur du VB pour faire ca parce que pour le second traitement je suis obligé de faire un code VB pour me connecter au progiciel, j'ai pas la DLL qu'il faut pour pouvoir me connecter avec un autre langage. mais pour la partie ou je scinde mon fichier de donnée, eventuellement je peux passer par du C, c'est vrai que ca serait peu etre plus rapide. lke probleme est que j'ai pas les droits pour installer un compilo C sur mon poste et que je sais pas quand on pourra venir m'en installer un.

    Pour en revenir à mon programme, Pour l'instant ce que je fais c'est que j'ouvre mon fichier en Binaire et que je recupère toutes les données en une fois dans un tableau avec un Get et un split.
    ensuite je comptais scinder mon tableau en plusieurs sous partie (c'est ma question) et recréer pour chacun de ces sous tableau un fichier de donnée avec un join et un put.

  6. #6
    Membre Expert
    Avatar de Delbeke
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    2 675
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 2 675
    Par défaut
    Si tes donnees sont toutes de la même taille (d'après l'exemple 8 octets), il est possible d'ouvrir ton fichier en mode Random avec une longeur d'enregistrement qui serait un multiple de la taille de la donnée

    Quelque chosse comme çà

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    Private Sub Command1_Click()
      Dim hFichIn As Integer
      Dim hFichOut As Integer
      Dim TailleDonnée As Integer
      Dim NbDonnées As Integer
      Dim Buffer As String
      Dim NumFichier As Integer
      Dim MonFichier As String
     
      MonFichier = App.Path & "\MesDonnes.txt"
      TailleDonnée = 8
      NbDonnées = 4000
      Buffer = String(TailleDonnée * NbDonnées, 0) 'taille maxi 32767
      NumFichier = 1
      hFichIn = FreeFile
      Open MonFichier For Random As #hFichIn Len = Len(Buffer)
        Do While Not EOF(hFichIn)
          hFichOut = FreeFile
          Get #hFichIn, NumFichier, Buffer
          Open App.Path & "\Split" & NumFichier For Output As #hFichOut
            Print #hFichOut, Buffer
          Close #hFichOut
          NumFichier = NumFichier + 1
        Loop
      Close #hFichIn
    End Sub
    Ou même avec une ouverture en mode binaire

  7. #7
    HoB
    HoB est déconnecté
    Membre confirmé
    Homme Profil pro
    Consultant CRM
    Inscrit en
    Mai 2004
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultant CRM
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2004
    Messages : 58
    Par défaut
    merci pour ta réponse.
    en fait mes données varient entre 6 et 15 caracteres.

    je ne suis pas sur de comprendre le Open MonFichier For Random As #hFichIn Len = Len(Buffer) :
    ca ouvre le fichier de donnée et permet de récupérer des bloc de la taille du buffer ? et tant que l'on récupére un bloc de cette taille on ecrit un nouveau fichier avec le buffer, c'est bien cela ?

  8. #8
    Membre Expert
    Avatar de Delbeke
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    2 675
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 2 675
    Par défaut
    c'etait çà l'idée, a jetter à la poublelle puisque tes données n'ont pas de taille fixe.

  9. #9
    Membre Expert
    Avatar de zazaraignée
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    3 174
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 3 174
    Par défaut
    Code HoB : Sélectionner tout - Visualiser dans une fenêtre à part
    (...) je dois faire un programme qui scinde des fichier de donnée en plusieurs partie (...)

    Dans quel format, le fichier de données ? Texte ? Binaire ? Excel ? Table d'une base de données ?

  10. #10
    Membre Expert
    Avatar de Delbeke
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    2 675
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 2 675
    Par défaut
    Bonjour zaza, il est une coutume en france de monter un canular le premier avril de chaque année. On appelle çà un poisson d'avril. Je pense que c'est le cas ici

Discussions similaires

  1. fonction pour remplir un tableau de char *
    Par saidus dans le forum C
    Réponses: 3
    Dernier message: 02/05/2009, 10h28
  2. [Tableaux] Fonction pour remplir un tableau
    Par renaud26 dans le forum Langage
    Réponses: 10
    Dernier message: 27/01/2008, 10h19
  3. Réponses: 3
    Dernier message: 08/08/2007, 09h47
  4. [SQL] Fonction pour trier un tableau
    Par ciel65 dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 15/02/2007, 16h43
  5. Réponses: 9
    Dernier message: 17/02/2006, 11h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo