Bon, j'entame un nouveau sujet car l'ancien est un peu confus.
Je vais expliquer un peu le principe. Mon appli est une sorte de magnétoscope numérique qui s'appuie sur les fonctionnalités de l'activex du logiciel VLC.
Pour effectuer plusieurs enregistrements simultanément, j'ai besoin d'instancier un nombre indéfini d'activex (dépend du nombre d'enregistrement). J'ai donc actuellement un activex qui me sert de référence (FWAR.VLC), et je cherche à instancier dynamiquement d'autres activex en dupliquant ce champ autant de fois que nécessaire. Pour cela, à chaque enregistrement de mon fichier HyperFile est associé une chaîne aléatoire de 10 caractères (ici, pour cet enregistrement, la chaîne vaut "IjqwxXawch"). Donc je voulais faire en sorte que "IjqwxXawch" devienne un champ activex créé en dupliquant le champ FWAR.VLC de sorte que je puisse passer par IjqwxXawch>>play (c'est un exemple, il y a d'autres méthodes disponibles pour cet activex).
J'espère avoir été assez clair.
Voici le message d'erreur que j'obtiens lorsque ma procédure se déclenche :
Erreur à la ligne 15 : L'élément 'IjqwxXawch' est inconnu.
Lorsque le thread s'exécute à nouveau, j'obtiens le message suivant :
Erreur à la ligne 13 : Le champ 'IjqwxXawch' existe déjà.
Voici le code complet de ma procédure :
PROCEDURE Proc_Record() dhDateHeure est une DateHeure // Parcours de la liste des enregistrements programmées HLitPremier(Enregistrement) TANTQUE PAS HEnDehors(Enregistrement) SI Enregistrement.Date+Enregistrement.HeureDeb < dhDateHeure ET Enregistrement.EnCours = Faux ALORS HSupprime(Enregistrement) Info("Des enregistrements programmés obsolètes ont été supprimés automatiquement en raison d'un dépassement de la date actuelle par rapport à la date de début de l'enregistrement.") FIN Activex est une chaîne = Enregistrement.Activex SI Enregistrement.Date+Enregistrement.HeureDeb = dhDateHeure ET Enregistrement.EnCours = Faux ALORS // On instancie un activex spécialement créé pour l'enregistrement ChampClone(FWAR.VLC, Activex) // On cache l'activex instancié {Activex, indVariable}..Visible = Faux // On définie le nom du fichier de sortie fichiertemp est une chaîne SI Enregistrement.NomProg <> "" ALORS fichiertemp = Enregistrement.ChaineTV+Enregistrement.NomProg+".mpg" SINON fichiertemp = Enregistrement.ChaineTV+Enregistrement.NomFichier+".mpg" FIN // On attribue les éléments de la ligne de commande TabRec[1]=":sout=#duplicate{dst=std{access=file,mux="+Encapsulation+",url="+CléDéfautRep+fichiertemp+"}}" // On lance l'enregistrement {Activex, indVariable}>>addTarget(Enregistrement.Lien,TabRec,8,0) // On modifie l'enregistrement en le définissant comme actif Enregistrement.EnCours = Vrai HModifie(Enregistrement) FIN SI Enregistrement.Date+Enregistrement.HeureFin = dhDateHeure ET Enregistrement.EnCours ALORS // Si l'enregistrement est actif et qu'il arrive à sa fin, on l'arrête, on détruit l'activex instancié à cet effet, puis on supprime l'enregistrement {Activex, indVariable}>>stop ChampSupprime({Activex, indVariable}) HSupprime(Enregistrement) FIN // On lit l'enregistrement suivant HLitSuivant(Enregistrement) FIN
Quelqu'un pour m'aider svp ? Vous pouvez me contacter par mail au besoin. |