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

Threads & Processus C++ Discussion :

[Débutant] Thread


Sujet :

Threads & Processus C++

  1. #1
    Candidat au Club
    Homme Profil pro
    Dévelloppeur stage informatique
    Inscrit en
    Juin 2014
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Indre et Loire (Centre)

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

    Informations forums :
    Inscription : Juin 2014
    Messages : 8
    Points : 4
    Points
    4
    Par défaut [Débutant] Thread
    Bonjour,


    Utilisation Builder c++

    Le principe est simple, ouvrir le fichier sim10.f06, récupérer toutes les lignes avec un '%' en premier caractère, puis écrire les lignes dans un nouveau fichier texte qui sera ensuite ouvert par la fonction voir2, pour être inscrit dans le tableur. Cette fonction sauver est mise dans un timer (avec pour temps de rafraîchissement le plus faible possible, suivant le temps de calcul de l'ordinateur) car le fichier doit être lus en temps réel.
    Le but y insérer un système de "thread" pour ne pas bloquer l'analyse du fichier durant le temps du calcul.
    PS: un fichier d'environ 8.000.000 de lignes peut être généré en 3 minutes seulement. Donc il faudrait le temps le plus rapide possible.

    extrait du fichier sim10.f06 :

    *** USER INFORMATION MESSAGE 4158 (DFMSA)
    ---- STATISTICS FOR SPARSE DECOMPOSITION OF DATA BLOCK SCRATCH FOLLOW
    NUMBER OF NEGATIVE TERMS ON FACTOR DIAGONAL = 10
    MAXIMUM RATIO OF MATRIX DIAGONAL TO FACTOR DIAGONAL = 2.4E+15 AT ROW NUMBER 13
    %2.00000E-01 2 1 1.00E+00 1.56E-01 1.00E+00 1.000 0 1 0 5.97E-05 3.983E-02 1.28E-04 8.621E-03 306358 3 1.00 0 0 1 2

    *** USER INFORMATION MESSAGE 4158 (DFMSA)
    ---- STATISTICS FOR SPARSE DECOMPOSITION OF DATA BLOCK SCRATCH FOLLOW
    NUMBER OF NEGATIVE TERMS ON FACTOR DIAGONAL = 10
    MAXIMUM RATIO OF MATRIX DIAGONAL TO FACTOR DIAGONAL = 2.4E+15 AT ROW NUMBER 13
    %2.00000E-01 2 2 4.02E-01 1.57E-01 1.33E-01 0.801 0 1 0 5.32E-05 3.610E-02 1.09E-04 8.633E-03 306346 3 1.00 0 0 2 3

    *** USER INFORMATION MESSAGE 4158 (DFMSA)
    ---- STATISTICS FOR SPARSE DECOMPOSITION OF DATA BLOCK SCRATCH FOLLOW



    Donc voici la fonction sauver de mon Unit 4 (endroit on le tableur est inséré) qui permet d'ouvrir le gros fichier:
    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    long int taille3, open;
    String ouvrir3; // Le nom du fichier récupéré grâce a l'OpenDialog
     
    void sauver()
    {
        int sauve;
        long int l;
        unsigned long int i=0 ;
        AnsiString chaine="";
        char buffer;
        //ShowMessage("save done");
        open=FileOpen(ouvrir3,fmOpenRead | fmShareDenyNone);
        FileSeek(open,0,2);
        taille3=GetFileSize((HANDLE)open,NULL);
        FileSeek(open,0,0);
        sauve=FileOpen("fichiercopie.f06",fmOpenWrite | fmShareDenyNone);
     
     
        while (i<=taille3)
        {
     
            FileRead(open,&buffer,sizeof(char));
     
            if(buffer=='%')
            {
                chaine=chaine+buffer;
     
                while(buffer!='\n')
                {
                    FileRead(open,&buffer,sizeof(char));
                    chaine=chaine+buffer;
                    i++;
                }
                l=chaine.Length();
                FileWrite(sauve,chaine.c_str(),l);
                chaine="";
     
            }
            else
            {
     
                if(sauve==-1)
                {
                    sauve=FileCreate("fichiercopie.txt");
                }
                i++;
            }
     
        }
        FileClose(sauve);
        FileClose(open);
        voir2();
    }



    Merci de votre aide et a votre temps consacré pour répondre.

  2. #2
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2007
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2007
    Messages : 60
    Points : 71
    Points
    71
    Par défaut
    Bonjour,

    Quelle est ta question ?
    Pour l'instant ton post ressemble à un énoncé de devoir, et on ne va pas le faire pour toi.

    Bonne journée

  3. #3
    Candidat au Club
    Homme Profil pro
    Dévelloppeur stage informatique
    Inscrit en
    Juin 2014
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Indre et Loire (Centre)

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

    Informations forums :
    Inscription : Juin 2014
    Messages : 8
    Points : 4
    Points
    4
    Par défaut
    Ce ci n'est pas un devoir. Je suis actuellement en stage informatique dans une société. Je viens de BTS iris. Un employer de la boite a demandé au service informatique un logiciel permettant de récupérer des données précise de 2fichier textes different, le premier ( plus simple est terminé), j'en suis passer au second fichier qui est beaucoup plus volumineux . Et j'aimerai savoir si une technique permettant de gagner du temps dans la lecture du fichier, plutôt que de lire les caractères 1 a 1 ce qui prend beaucoup trop de temps, et si il en existe une comment la mettre en oeuvre. Je demande a personne de faire le boulot a ma place. Mais je cherche un peu d'aide extérieur étant donné que mon maitre de stage ainsi que son collège ne savent pas programmé et ne font que du réseaux.
    Je précise le '%' est toujours en début de ligne . Célà peut peut-être aider. Merci

  4. #4
    Expert éminent sénior

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 189
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 189
    Points : 17 141
    Points
    17 141
    Par défaut
    Un changement de ligne est un octet comme un autre (de valeur 13 ou \n) (eventuellement complété par un \r)
    La notion de ligne n'existe pas dans le fichier.

    Cependant, il est possible de se placer à un endroit arbitraire d'un fichier, ou encore de se déplacer d'une distance arbitraire.

    Cela dit, si tu es sur un linux, tu peux t'amuser avec grep

    grep -e "^%" par exemple, ne gardera que les lignes commencant par un '%'
    La commande complete serait alors grep -e "^%" fichier_source > fichier_destIl doit surement exister un équivalent pour windows. Peut-être "wingrep".

    Autre possibilité, avec de la chance, le code utilise un système de logging (journalisation, en français)
    Il suffirait que la ligne avec le % soit générée sur un niveau différent des autres pour pouvoir la récupérer à part.
    Mes principes de bases du codeur qui veut pouvoir dormir:
    • Une variable de moins est une source d'erreur en moins.
    • Un pointeur de moins est une montagne d'erreurs en moins.
    • Un copier-coller, ça doit se justifier... Deux, c'est un de trop.
    • jamais signifie "sauf si j'ai passé trois jours à prouver que je peux".
    • La plus sotte des questions est celle qu'on ne pose pas.
    Pour faire des graphes, essayez yEd.
    le ter nel est le titre porté par un de mes personnages de jeu de rôle

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Débutant] Thread non bloquant
    Par GoustiFruit dans le forum Langage
    Réponses: 4
    Dernier message: 28/11/2007, 17h08
  2. [Débutant]Thread Tomcat journalier pb de sleep
    Par mediateur59 dans le forum Tomcat et TomEE
    Réponses: 1
    Dernier message: 06/11/2006, 11h39
  3. [Débutant][Thread] Comment lancer en boucle un affichage
    Par comme de bien entendu dans le forum Général Java
    Réponses: 6
    Dernier message: 03/02/2006, 10h20
  4. [Débutant] [Thread] Faire patienter un programme java....
    Par yoxx dans le forum Concurrence et multi-thread
    Réponses: 3
    Dernier message: 25/09/2005, 12h36
  5. [débutant] thread et TMediaPlayer
    Par Tymk dans le forum C++Builder
    Réponses: 5
    Dernier message: 15/01/2005, 14h06

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