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

C++ Discussion :

Demande d aide pour la comprehension d'un système


Sujet :

C++

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    329
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 329
    Points : 126
    Points
    126
    Par défaut Demande d aide pour la comprehension d'un système
    Bonjour,

    J'essaie de comprendre une fonctionnalité d'un programme qu'il y a sur ce site.

    https://www.sierrachart.com/index.ph...tPersistentInt

    Ici, cette ou ces fonctions arrivent à stocker en mémoire machine de manière permanente, une donnée et sa clé pointeur.
    J'ai testé leur fonction en via un cpp que j'ai fait.

    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
     
    #include  "sierrachart.h"
    #include "scstudyfunctions.h"
    #include <iterator>
    #include <iostream>
    #include <vector>
     
    SCDLLName("Test")
     
    SCSFExport scsf_Test(SCStudyInterfaceRef sc) {
     
    SCSubgraphRef Red=sc.Subgraph[0],Ble=sc.Subgraph[1];
     
      if(sc.SetDefaults){
      sc.GraphName="Test";
      sc.GraphRegion=0;
      sc.AutoLoop=true;
      sc.FreeDLL=1;
         Red.Name="Rouge";
         Red.DrawStyle=DRAWSTYLE_VALUE_ON_HIGH;
         Red.PrimaryColor=RGB(255,0,0);
         Red.DrawZeros=true;
         Red.GraphicalDisplacement=0;
         Ble.Name="Bleu";
         Ble.DrawStyle=DRAWSTYLE_VALUE_ON_LOW;
         Ble.PrimaryColor=RGB(0,128,255);
         Ble.DrawZeros=true;
         Ble.GraphicalDisplacement=0;
      }/*fin de default*/
     
      int& Door  = sc.GetPersistentInt(0);
      int& Size  = sc.GetPersistentInt(1);
     
      if((Door == 0)&&(sc.Index == 0)){
    	   Door = 0;
    	   Size+=1;
      }
      else if((Door < sc.Index)&&(sc.Index >=1)){
    	   Door=sc.Index;
    	   Size+=1;
      }
      else{}
     
      if(Size >= 1){
    	  Red[sc.Index] = Door;
    	  Ble[sc.Index]  = Size;
      }
      if(Size >= 10){
              sc.GetPersistentInt(1) = 0;
              /*OU Size = 0;*/
      }
    }
    Cela fonctionne bien.
    J'ai même réussi à sauver un tableau "VECTOR".

    Maintenant, je souhaiterai comprendre comment cela est construit en c++

    Si je comprends, la méthode utilisée.
    La donnée est maintenu en mémoire par la sauvegarde de sa clé pointeur en mémoire elle aussi.
    Et les deux sont permanentes ou persistentes.
    Dans leur bibliothèque sierrachart.h j'ai touvé cela, rien de plus.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    	int& ((SCDLLCALL* GetPersistentInt)(int Key));
    	void ((SCDLLCALL* SetPersistentInt)(int Key, int Value));
    Pour éviter une fuite mémoire des données ils ont des fonctions qui permettent d’effacer la donnée la
    donnée et le pointeur en mémoire.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
            sc.GetPersistentInt(1) = 0;
    Cela fonctionne bien. (Voir CPP ci-dessus)

    Mais comment on fait pour sauvegarder une clé, une donnée, un tableau de données, en mémoire permanente ?
    Existe-il une bibliothèque en c++ pour le faire ?

    Quelqu'un peut-il m'apprendre à le faire en c++ ?
    Avez-vous un script exemple pour apprendre ?

    Merci d'avance.

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 074
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 074
    Points : 12 120
    Points
    12 120
    Par défaut
    Mais comment on fait pour sauvegarder une clé, une donnée, un tableau de données, en mémoire permanente ?
    La mémoire permanente, c'est dans le système de fichier.
    Je vous au moins 3 manières de faire et je pense qu'il doit en avoir bien d'autres, en fonction des OS et des hardwares.
    - fichier mappé en mémoire
    - mémoire partagée entre application, via segment de Dll partagée ou autre
    - protection de page pour gérer les accès via les interruptions logicielle.
    ...

    Existe-il une bibliothèque en c++ pour le faire ?
    Bin, tu viens d'en trouver une.

    Quelqu'un peut-il m'apprendre à le faire en c++ ?
    Ce n'est pas le type de fonctionnalité directement accessible au langage C++, il faut passer par des librairies supplémentaires (C++ ou autres).

Discussions similaires

  1. Demande d'aide pour un exercice
    Par IDE dans le forum C
    Réponses: 3
    Dernier message: 29/10/2005, 15h09
  2. [xsl][xalan]Demande d'aide pour un comptage
    Par HomoErectus dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 19/09/2005, 09h22
  3. Demande d'aide pour query difficile
    Par ericjean514 dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 22/02/2005, 18h52
  4. Demande d'aide pour une requête
    Par arkzor dans le forum Requêtes
    Réponses: 3
    Dernier message: 28/12/2004, 02h40
  5. [TPW][cours]Demande d'aide pour finir un programme
    Par jf dans le forum Turbo Pascal
    Réponses: 21
    Dernier message: 16/06/2003, 18h10

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