PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2024 → [WD10] ChampClone et Activex = Erreur
[WD10] ChampClone et Activex = Erreur
Débuté par ltdnico, 03 fév. 2006 17:53 - 2 réponses
Posté le 03 février 2006 - 17:53
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.
Posté le 04 février 2006 - 21:13
Personne n'a de solution ?
Posté le 07 février 2006 - 17:42
Si j'ai bien vu, ta ligne 15 est celle-ci :
{Activex, indVariable}..Visible = Faux

C'est normal qu'il ne trouve pas puisque Activex est un champ et non pas une variable.
Tu dois donc mettre ceci:
{Activex, indChamp}..Visible = Faux