un simple compteur c'est plus simple
maintenant si 6 compteurs ne causent pas de soucis....
S'il faut lancer 6 threads en parallèle et assurer l'unicité du nom du fichier, je vois deux solutions pour le compteur:
1. Une variable globale, et l'incrémentation est dans une section critique
2. Une classe, et une instance globale au projet. La propriété qui renvoie la valeur du compteur doit aussi inclure une section critique
Je préfère la deuxième solution, car la gestion du compteur est entièrement dévolue à la classe. D'ailleurs on peut directement lui confier la génération du nom du fichier.
Et si on veux vraiment tout assurer, il faut utiliser un singleton (constructeur privé, instanciation via une méthode globale, toussa...)
Tatayo.
oula sa devient compliqué tout ça
si je comprends bien, dans la partie projet (là ou je vois toutes mes fenêtres et FI) je créé
une class
une procédure globale ? (un comteur de 0 à 60 sec et codes pour les enregistrements ?)
Il doit me manquer une info, car je ne comprends pas la question.
Tatayo.
pour faire la solution 2 , celle que vous pensez être la mieux
En fait ce n'est pas bien compliqué.
On commence par déclarer une classe:
Ensuite il faut une méthode globale privée pour incrémenter le compteur:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 Compteur est une Classe PRIVÉ m_nValeur est un entier GLOBAL PRIVÉ mg_nDerniereValeur est un entier FIN
Ensuite une propriété publique pour récupérer la valeur du compteur:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 PROCEDURE PRIVÉE GLOBALE Incremente() ::mg_nDerniereValeur++ RENVOYER ::mg_nDerniereValeur
Ensuite l'utilisation est simple: il suffit d'instancier autant de compteur que nécessaire (un dans l'init du projet, ou un dans chaque procédure qui en a besoin), puis de récupérer la valeur ainsi:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 PROCEDURE p_nValeur() SectionCritiqueDébut() :m_nValeur = ::Incremente() SectionCritiqueFin() RENVOYER :m_nValeur
A chaque interrogation de p_nValeur, la valeur sera incrémentée de 1. Comme le compteur interne est global, il est partagé par toutes les instances de la classe Compteur, et "survie" même si toutes les instances sont libérées. De plus, comme l'incrémentation de cette valeur est dans une section critique, deux instances distinctes ne peuvent pas récupérer la même valeur.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 clMonCompteur est un compteur nMaValeur est un entier nMaValeur = clMonCompteur:p_nValeur
La propriété étant en lecture seule et les deux membres privés, la valeur ne peut pas être modifiée en dehors de la classe.
Tatayo.
mais du coup ce compteur, il est infini non et cela suppose que je dois interroger la valeur du compteur toutes les sec ?Projet EXPRESS_S Classe1
Déclaration de Classe1
Compteur est une Classe
PRIVÉ
m_nValeur est un entier
GLOBAL PRIVÉ
mg_nDerniereValeur est un entier
FIN
Récupération de la propriété p_nValeur
PROCEDURE p_nValeur()
SectionCritiqueDébut()
:m_nValeur = ::Incremente()
SectionCritiqueFin()
RENVOYER :m_nValeur
Constructeur
PROCEDURE Constructeur()
Destructeur
PROCEDURE Destructeur()
Méthode Incremente
PROCEDURE PRIVÉE GLOBALE Incremente()
::mg_nDerniereValeur++
RENVOYER ::mg_nDerniereValeur
et pour les temps de 10 sec, vous aviez vu ça sous forme de conditions ?
ex:
si nMaValeur = 1 Alors
//Enregistrement
si nValeur = 10 ALORS
Stop enregistrement et Fermer
FIN
C'est comme ça que vous l'aviez imaginé ?
Il ne faut pas tout mélanger !
La classe que j'ai indiquée répond à la question: "comment avoir des noms de fichiers différents". Il faut l'interroger quand on veut une valeur unique.
Pour compter les secondes dans une boucle et faire avancer une jauge, une simple variable suffit.
Tatayo.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager