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

Langage Perl Discussion :

Erreur avec Strawberry_5.20 absente en Active_5.12


Sujet :

Langage Perl

  1. #1
    Membre chevronné Avatar de dmganges
    Homme Profil pro
    Retraité. Ne recherche pas un emploi.
    Inscrit en
    Septembre 2011
    Messages
    1 392
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Retraité. Ne recherche pas un emploi.
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2011
    Messages : 1 392
    Points : 2 044
    Points
    2 044
    Par défaut Erreur avec Strawberry_5.20 absente en Active_5.12
    Bonjour,
    Bien que le problème soit mis en évidence sur un module je poste ici car il semble s'agir d'initialisation de chemin de fichier.

    Je migre de Active_5.12 (32bits) en Strawberry_5.20 (64bits)

    J'utilise le module Win32::MediaPlayer
    Ce module fonctionne aussi bien en 5.12 qu'en 5.20

    Le programme suivant fonctionne parfaitement dans les 2 versions de Perl.

    NOUV.pl :
    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
    #!/usr/bin/perl
    use strict;
    use warnings;
    use utf8;
    use File::Spec;														# Gestion des noms des chemins sous tous les OS
    use Win32::MediaPlayer;										# Pour jouer un fichier son
     
    my $Time = 0;
    my $winmm = new Win32::MediaPlayer;
    my $Repertoire = "E:/_APPLI/Arabe/Ass_1/CDdecoup/LLc_009/";
    my $Fic = "Tr_001.mp3";
     
    my $fichier_Trad_Ora = File::Spec->catfile( $Repertoire, $Fic );
    $winmm->load($fichier_Trad_Ora);
    			$winmm->play;
    			$winmm->volume(80);
    			$Time = $winmm->length;
    			sleep (4);
    			$winmm->close;
    Le problème apparaît lorsque j'utilise Win32::MediaPlayer dans un programme (ESS.pl) beaucoup plus long qui fait appel entre autre à plusieurs API Windows.

    Suivant que je passe à Win32::MediaPlayer un chemin de fichier écrit en dur par moi-même ou un chemin généré par File::Spec et même par File::Spec::Win32, j'ai des comportements différents.

    Avec le chemin en dur ça fonctionne toujours, avec un chemin généré, jamais, quelque soit la façon dont je triture le chemin :

    Ceci fonctionne toujours, et bien d'autres essais...:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $fichier_mp3 = "E:\\_APPLI\\Arabe\\Ass_1\\CDdecoup\\LLc_009\\FicTitre.mp3";
    $fichier_mp3 = 'E://_APPLI//Arabe//Ass_1//CDdecoup//LLc_009//FicTitre.mp3';
    ...
    $winmm->load($fichier_mp3);

    Ceci ne fonctionne jamais, et bien d'autres essais...:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $fichier_mp3 = File::Spec::Win32->catfile( $Repertoire, 'FicTitre.mp3' );
    $winmm->load($fichier_mp3);
    même après avoir trituré dans tous les sens :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $fichier_mp3 = File::Spec::Win32->catfile( $Repertoire, 'FicTitre.mp3' );
    my @TempArray = split (/\\/, $fichier_mp3);
    print "ARRAY = @TempArray\n\n";
    $fichier_mp3 = join("//", @TempArray);
    ou encore :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $fichier_mp3 = File::Spec::Win32->catfile( $Repertoire, 'FicTitre.mp3' );
    my @TempArray = split (/\\/, $fichier_mp3);
    print "ARRAY = @TempArray\n\n";
    $fichier_mp3 = join("\\\\", @TempArray);
    Je sèche dessus depuis 2 jours,
    auriez-vous une idée ?
    MERCI d'avance !

    Ci-dessous divers essais, ceux qui fonctionnent correspondent aux chemins en dur,
    Le dernier qui plante avec un chemin construit avec File::Spec::Win32

  2. #2
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 577
    Points : 5 753
    Points
    5 753
    Par défaut
    Que contient $Repertoire et comment est-il construit si ce n'est pas un chemin un dur dans tes usages de catfile ?
    Pourrais-tu afficher $fichier_mp3 (sans le splitter) ?
    Plus j'apprends, et plus je mesure mon ignorance (philou67430)
    Toute technologie suffisamment avancée est indiscernable d'un script Perl (Llama book)
    Partagez vos problèmes pour que l'on partage ensemble nos solutions : je ne réponds pas aux questions techniques par message privé
    Si c'est utile, say

  3. #3
    Membre chevronné Avatar de dmganges
    Homme Profil pro
    Retraité. Ne recherche pas un emploi.
    Inscrit en
    Septembre 2011
    Messages
    1 392
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Retraité. Ne recherche pas un emploi.
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2011
    Messages : 1 392
    Points : 2 044
    Points
    2 044
    Par défaut
    Bonjour Philou67430,
    MERCI de t'intéresser à mon pb !

    Le $Repertoire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $Repertoire = File::Spec::Win32->catfile( $RepBase, $config{DEFAUT}{auteur}, 'CDdecoup', "LLc_$NumCours" );

    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
    	my $fichier_mp3 = File::Spec::Win32->catfile( $Repertoire, 'FicTitre.mp3' );
    		if ( !-e $fichier_mp3 ) {
      		die "Impossible de lire le fichier $fichier_mp3\n$!";
    		}
    		if ( $Stop ne "" ) { return; }
     
    	#####################DUF
     
    	#	$fichier_mp3 = "E:\\_APPLI\\Arabe\\Ass_1\\CDdecoup\\LLc_009\\FicTitre.mp3";
    	#	$fichier_mp3 = 'E://_APPLI//Arabe//Ass_1//CDdecoup//LLc_009//FicTitre.mp3';
     
    	#	my @TempArray = split (/\\/, $fichier_mp3);
    	#	print "ARRAY = @TempArray\n\n";
    	#	$fichier_mp3 = join("//", @TempArray);
    	#	$fichier_mp3 = join("\\\\", @TempArray);
     
    		print "FICMP3_1040=$fichier_mp3=\n\n\n";
     
    		sleep(1);
    		$winmm->load($fichier_mp3);
    		$winmm->play;
    		sleep(4);
    Cette construction avec File::Spec::Win32 fonctionne en ActivePerl 5.12 et même File::Spec depuis 2011 !
    Je suis venu à File::Spec::Win32 pour éponger un doute...

    Voici $fichier_mp3 non splitté

  4. #4
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 820
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 820
    Points : 499 184
    Points
    499 184
    Par défaut
    Bonjour,

    En complément de la question de philou, je te suggère la solution qui consiste à forcer à avoir les chemins à la mode Unix (/), j'en ai eu ce weekend quand dans un programme qui interagi avec R et ce dernier accepte uniquement des chemins Windows en \\ ou /.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    my $fichier_Trad_Ora = File::Spec::Unix->catfile( $Repertoire, $Fic );

  5. #5
    Membre chevronné Avatar de dmganges
    Homme Profil pro
    Retraité. Ne recherche pas un emploi.
    Inscrit en
    Septembre 2011
    Messages
    1 392
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Retraité. Ne recherche pas un emploi.
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2011
    Messages : 1 392
    Points : 2 044
    Points
    2 044
    Par défaut
    Bonjour djibril, et MERCI !

    J'avais déjà essayé.
    Je viens de refaire le test par acquit de conscience, même ano.

    En dur Win32::MediaPlayer accepte toutes ces combinaisons :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    "E:\\_APPLI\\Arabe\\Ass_1\\CDdecoup\\LLc_009\\FicTitre.mp3"
    "E:\_APPLI\Arabe\Ass_1\CDdecoup\LLc_009\FicTitre.mp3"
    'E://_APPLI//Arabe//Ass_1//CDdecoup//LLc_009//FicTitre.mp3'
    'E:/_APPLI/Arabe/Ass_1/CDdecoup/LLc_009/FicTitre.mp3'
    Ce qui me déroute c'est que ceci fonctionne en 5.20 :
    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
    #!/usr/bin/perl
    use strict;
    use warnings;
    use utf8;
    use File::Spec;														# Gestion des noms des chemins sous tous les OS
    use Win32::MediaPlayer;										# Pour jouer un fichier son
     
    my $Time = 0;
    my $winmm = new ;
    my $Repertoire = "E:/_APPLI/Arabe/Ass_1/CDdecoup/LLc_009/";
    my $Fic = "Tr_001.mp3";
    my $fichier_Trad_Ora = File::Spec->catfile( $Repertoire, $Fic );
    $winmm->load($fichier_Trad_Ora);
    			$winmm->play;
    			$winmm->volume(80);
    			$Time = $winmm->length;
    			sleep (4);
    			$winmm->close;
    NB : seulement File::Spec et je suis en Win7 !

    D'autre part, j'ai un autre programme qui contrôle mes BAL qui utilise également Win32::MediaPlayer et File::Spec qui est passé comme une lettre à la poste en 5.20

  6. #6
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 820
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 820
    Points : 499 184
    Points
    499 184
    Par défaut
    Hum, y a -t-il un souci d'encodage de la chaine ? Ton code est encodé en quoi ?

  7. #7
    Membre chevronné Avatar de dmganges
    Homme Profil pro
    Retraité. Ne recherche pas un emploi.
    Inscrit en
    Septembre 2011
    Messages
    1 392
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Retraité. Ne recherche pas un emploi.
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2011
    Messages : 1 392
    Points : 2 044
    Points
    2 044
    Par défaut
    Citation Envoyé par djibril
    Hum, y a -t-il un souci d'encodage de la chaine ?
    Je ne pense pas, tous mes codes sont en utf-8 NO BOM et j'ai use utf8;

    Je fais mes programmes avec beaucoup de Copier/Coller ce bout et bien d'autres fonctionnent :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    if ( $Mail_Ini{GLOBAL}{FicSon} eq 'OUI' ) {
    	$FicSon = File::Spec->catfile( $RepBase, $Mail_Ini{GLOBAL}{SonFin} );
    	$winmm->load($FicSon);
    	$winmm->play;
    	$winmm->volume(80);
    	sleep (4);
    	$winmm->close;
    }

  8. #8
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 820
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 820
    Points : 499 184
    Points
    499 184
    Par défaut
    Sans Tk, tu as des soucis ?

  9. #9
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 577
    Points : 5 753
    Points
    5 753
    Par défaut
    En complément des recherches de Djibril, pourrais-tu faire les mêmes affichages que j'ai demandé pour la version avec les chemins en dur ?
    Pourrais-tu essayer d'utiliser catdir au lieu de catfile pour construire $Repertoire ?

    Pourrais-tu te mettre sous le débugger et le laisser planter, et fournir le numéro de ligne dans Win32::MediaPlayer où cela plante (et dire quelle verison de Win32::MediaPlayer es installée avec perl -MWin32::MediaPlayer -E 'print $Win32::MediaPlayer::VERSION').
    Plus j'apprends, et plus je mesure mon ignorance (philou67430)
    Toute technologie suffisamment avancée est indiscernable d'un script Perl (Llama book)
    Partagez vos problèmes pour que l'on partage ensemble nos solutions : je ne réponds pas aux questions techniques par message privé
    Si c'est utile, say

  10. #10
    Membre chevronné Avatar de dmganges
    Homme Profil pro
    Retraité. Ne recherche pas un emploi.
    Inscrit en
    Septembre 2011
    Messages
    1 392
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Retraité. Ne recherche pas un emploi.
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2011
    Messages : 1 392
    Points : 2 044
    Points
    2 044
    Par défaut
    Citation Envoyé par djibril
    Sans Tk, tu as des soucis ?
    Tk ne me donne aucun soucis dans les autres...
    Je suis passé en 5.20 au cas où déjà, ou dans le futur Tk serait corrigé pour la gestion des caractères arabes... tu te souviens !!!

    J'ai quasiment tout migré.
    J'ai rencontré 2 pb.
    Les 2 dans l'utilisation de Win32::API et Win32::API::Struct.

    Les 1er avec Win32::API et les ai résolu :
    En 5.12 n'ayant pas besoin des codes retour je faisais mes appels sans code retour, ainsi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    my $EcranVeille = new Win32::API("user32", "SystemParametersInfo",'II');
    my $EcranExtinction = new Win32::API("kernel32", "SetThreadExecutionState",'I');
    En 5.20, ça fonctionnait mais ça générait des anomalies :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Use of uninitialized value in pack at ................ line 317.
    Avec appel, avec code retour :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    my $EcranVeille = new Win32::API("user32", "SystemParametersInfo",'II','I');
    my $EcranExtinction = new Win32::API("kernel32", "SetThreadExecutionState",'I','I');
    c'est limipde

    Il m'en reste une sur Win32::API::Struct.
    qui génère :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Use of uninitialized value in pack at C:/Strawberry/perl/vendor/lib/Win32/API/Struct.pm line 317.
    Toujours de l'API mais ici c'est une structure qui est passée :

    [EDIT 15:42] Ajout appel SYSTEM_POWER_STATUS
    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
    Win32::API::Struct->typedef(SYSTEM_POWER_STATUS => qw
    (
      BYTE ACLineStatus;
      BYTE BatteryFlag;
      BYTE BatteryLifePercent;
      BYTE Reserved1;
      DWORD BatteryLifeTime;
      DWORD BatteryFullLifeTime;
    ));
     
    use Win32::API;
    $Win32::API::DEBUG = 0;
    my $Power = Win32::API->new('kernel32','BOOL GetSystemPowerStatus(SYSTEM_POWER_STATUS status)');
    my $Status = Win32::API::Struct->new('SYSTEM_POWER_STATUS');
    $Power->Call($Status);
    Il semble que ça soit le cas pour toutes les structures passées en paramètre.
    sur CPAN

    J'ai trouvé également des discussions concernant d'autres structures faisant état de pb similaires...


    Sinon pour moi la migration Active_5.12 Strawberry_5.20, s'est plutôt bien passée.
    Bon je devrais la reporter 9 fois (3 PC avec WIn7, WIn8, Linux)

    J'ai conservé 5.12, au pire je la garderai pour faire tourner le programme qui plante en 5.20.

    Mais pour info je n'utilise que :
    Tk
    Config::Std
    Win32::MediaPlayer
    IMAP::Client
    Mail::IMAPClient
    MIMEarser
    Win32:rocess::List

  11. #11
    Membre chevronné Avatar de dmganges
    Homme Profil pro
    Retraité. Ne recherche pas un emploi.
    Inscrit en
    Septembre 2011
    Messages
    1 392
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Retraité. Ne recherche pas un emploi.
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2011
    Messages : 1 392
    Points : 2 044
    Points
    2 044
    Par défaut
    Citation Envoyé par Philou67430
    En complément des recherches de Djibril, pourrais-tu faire les mêmes affichages que j'ai demandé pour la version avec les chemins en dur ?
    Pourrais-tu essayer d'utiliser catdir au lieu de catfile pour construire $Repertoire ?
    Philou_3.png = chemins en dur, pas d'insulte, j'entends bien mon mp3
    Philou_4.png = avec catfile , (à la suite des précédents) çà plante même erreur

    Je fait le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    perl -MWin32::MediaPlayer -E 'print $Win32::MediaPlayer::VERSION'
    Philou_2.png - En cygwin, car en Win je n'ai pas fait l'environnement, j'ai vérifié cygwin voit bien la 5.20 et nao la sienne (5.14) :

    Pourrais-tu te mettre sous le débugger et le laisser planter, et fournir le numéro de ligne dans Win32::MediaPlayer où cela plante
    Je ne sais pas comment faire, ni même si j'ai un environnement débugger

  12. #12
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 577
    Points : 5 753
    Points
    5 753
    Par défaut
    Pour lancer le debugger, c'est pas compliqué :
    Quand tu auras découvert ses possibilités, tu vas "renaitre"
    (aide avec "h" ; pour lancer le programme depuis le debugger, "c" pour continue).
    Plus j'apprends, et plus je mesure mon ignorance (philou67430)
    Toute technologie suffisamment avancée est indiscernable d'un script Perl (Llama book)
    Partagez vos problèmes pour que l'on partage ensemble nos solutions : je ne réponds pas aux questions techniques par message privé
    Si c'est utile, say

  13. #13
    Membre chevronné Avatar de dmganges
    Homme Profil pro
    Retraité. Ne recherche pas un emploi.
    Inscrit en
    Septembre 2011
    Messages
    1 392
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Retraité. Ne recherche pas un emploi.
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2011
    Messages : 1 392
    Points : 2 044
    Points
    2 044
    Par défaut
    Quand tu auras découvert ses possibilités, tu vas "renaitre"
    Déconne pas, s'il me fallait refaire tout le chemin parcouru...

    N'oubliez pas tous les deux, qu'il n'y a aucune urgence pour moi.
    C'est seulement si vous avez du temps !
    Déjà MERCI !

    donc perl -d ess.pl :

  14. #14
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 577
    Points : 5 753
    Points
    5 753
    Par défaut
    Peux-tu montrer la ligne 1050 de ton script ess.pl ? (avec d'autres autour pour situer).
    Plus j'apprends, et plus je mesure mon ignorance (philou67430)
    Toute technologie suffisamment avancée est indiscernable d'un script Perl (Llama book)
    Partagez vos problèmes pour que l'on partage ensemble nos solutions : je ne réponds pas aux questions techniques par message privé
    Si c'est utile, say

  15. #15
    Membre chevronné Avatar de dmganges
    Homme Profil pro
    Retraité. Ne recherche pas un emploi.
    Inscrit en
    Septembre 2011
    Messages
    1 392
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Retraité. Ne recherche pas un emploi.
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2011
    Messages : 1 392
    Points : 2 044
    Points
    2 044
    Par défaut
    Bien sûr :

    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
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    #################################
    # Traitement des titres de cours
    sub Prog_Titre {
    	if ( $config{DEFAUT}{debug} eq 'OUI' ) {
    		print "\n-> Prog_Titre avec mode = $config{DEFAUT}{mod}\n";
    	}
    	$widget_text_cours->delete( "1.0", 'end' );
    	# On saute le titre en cas de répétition d'une phrase ou LDEb > 1
    	if ( $config{DEFAUT}{LDeb} eq '1' ) { 
      	my $fichier_titre = File::Spec::Win32->catfile( $Repertoire, 'FicTitre.utf8' );
      	open IN_Fic, '<:utf8', $fichier_titre
      		or ArretAno("Prog_Titre", $fichier_titre);
    		$Titre = <IN_Fic>;
    		close IN_Fic;
    		$Titre_Cours->update;
    		my $fichier_mp3 = File::Spec::Unix->catfile( $Repertoire, 'FicTitre.mp3' );
    		if ( !-e $fichier_mp3 ) {
      		die "Impossible de lire le fichier $fichier_mp3\n$!";
    		}
    		if ( $Stop ne "" ) { return; }
    	
    	#####################DUF
    		
    	#$fichier_mp3 = "E:\\_APPLI\\Arabe\\Ass_1\\CDdecoup\\LLc_009\\FicTitre.mp3";
    	#$fichier_mp3 = 'E://_APPLI//Arabe//Ass_1//CDdecoup//LLc_009//FicTitre.mp3';
    		
    	#	my @TempArray = split (/\\/, $fichier_mp3);
    	#	print "ARRAY = @TempArray\n\n";
    	#	$fichier_mp3 = join("//", @TempArray);
    	#	$fichier_mp3 = join("\\\\", @TempArray);
    		
    		print "FICMP3_1040=$fichier_mp3=\n\n\n";
    		
    		sleep(1);
    		$winmm->load($fichier_mp3);
    		$winmm->play;
    		sleep(4);
    		exit;
    		$winmm->volume($Choix_Vol);
    		$Time = $winmm->length;
    		$Pause = ($Time + 100);																		# Pause de titre de cours
    		Temporisation ($Pause);
    		$winmm->close;
        $Pause = ( $config{DEFAUT}{tempo} * 50 );										# Pause 2 - après titre
        Temporisation ($Pause);
    	}
    	exit;
    			
    	# Son "Dictée en français"
    	if ( $config{DEFAUT}{mod} eq 'DictFra' && $config{DEFAUT}{LDeb} eq '1' ) {
    		my $fichier_mp3 = File::Spec::Win32->catfile( $RepBase, 'DictFra.mp3' );
       	if ( !-e $fichier_mp3 ) {
         	die "Impossible de lire le fichier $fichier_mp3\n$!";
       	}
       	if ( $Stop ne "" ) { return; }
       	print "FICMP3_1054=$fichier_mp3\n\n";
    		$winmm->load($fichier_mp3);
    		$winmm->play;
    		$winmm->volume($Choix_Vol);
    		$Time = $winmm->length;
    		$Pause = ($Time + 200);																		# Pause Dictée français
    		Temporisation ($Pause);
    		$winmm->close;
    	}
    	# Son "Dictée en arabe"
    	if ( $config{DEFAUT}{mod} eq 'DictAra' && $config{DEFAUT}{LDeb} eq '1' ) {
    		my $fichier_mp3 = File::Spec::Win32->catfile( $RepBase, 'DictAra.mp3' );
       	if ( !-e $fichier_mp3 ) {
         	die "Impossible de lire le fichier $fichier_mp3\n$!";
       	}
       	if ( $Stop ne "" ) { return; }
       	print "FICMP3_1070=$fichier_mp3\n\n";
    		$winmm->load($fichier_mp3);
    		$winmm->play;
    		$winmm->volume($Choix_Vol);
    		$Time = $winmm->length;
    		$Pause = ($Time + 200);																		# Pause Dictée arabe
    		Temporisation ($Pause);
    		$winmm->close;	
    	}
    }
    La ligne 1050 correspond à :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $winmm->load($fichier_mp3);
    Celle avant le exit

    Il s'agit du chargement du fichier pour Win32::MediaPlayer

  16. #16
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 577
    Points : 5 753
    Points
    5 753
    Par défaut
    Chez moi, je n'arrive même pas à le faire fonctionner avec un chemin en dur ... (Strawberry 5.18) :/
    J'ai peur de ne pas être à la hauteur sur ce coup.
    Plus j'apprends, et plus je mesure mon ignorance (philou67430)
    Toute technologie suffisamment avancée est indiscernable d'un script Perl (Llama book)
    Partagez vos problèmes pour que l'on partage ensemble nos solutions : je ne réponds pas aux questions techniques par message privé
    Si c'est utile, say

  17. #17
    Membre chevronné Avatar de dmganges
    Homme Profil pro
    Retraité. Ne recherche pas un emploi.
    Inscrit en
    Septembre 2011
    Messages
    1 392
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Retraité. Ne recherche pas un emploi.
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2011
    Messages : 1 392
    Points : 2 044
    Points
    2 044
    Par défaut
    Chez moi, je n'arrive même pas à le faire fonctionner avec un chemin en dur
    et tu fais un essai sur Win32::MediaPlayer ?

    Même avec du rudimentaire :
    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
    #!/usr/bin/perl
    use strict;
    use warnings;
    use utf8;
    use File::Spec;														# Gestion des noms des chemins sous tous les OS
    use Win32::MediaPlayer;										# Pour jouer un fichier son
     
    my $Time = 0;
    my $winmm = new Win32::MediaPlayer;
    my $Repertoire = "E:/_APPLI/Arabe/Ass_1/CDdecoup/LLc_009/";
    my $Fic = "Tr_001.mp3";
    my $fichier_Trad_Ora = File::Spec->catfile( $Repertoire, $Fic );
    $winmm->load($fichier_Trad_Ora);
    			$winmm->play;
    			$winmm->volume(80);
    			$Time = $winmm->length;
    			sleep (4);
    			$winmm->close;
    Surtout n'y passe pas tout ton temps !
    déjà MERCI, pour tout le temps que tu as investi !
    Abandonne !
    Comme je l'ai précisé, je peux garder 5.12 c'est pas la place que ça prend...

  18. #18
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 820
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 820
    Points : 499 184
    Points
    499 184
    Par défaut
    Ayant Strawberry Perl 5.20 chez moi sous Win 8.1 64 bits, je teste cela ce soir (j'ai migré d'ActivePerl 5.16.3 )

  19. #19
    Membre chevronné Avatar de dmganges
    Homme Profil pro
    Retraité. Ne recherche pas un emploi.
    Inscrit en
    Septembre 2011
    Messages
    1 392
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Retraité. Ne recherche pas un emploi.
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2011
    Messages : 1 392
    Points : 2 044
    Points
    2 044
    Par défaut
    MERCI à toi aussi djibril !
    Comme à Philou, n'y passe pas la nuit !

  20. #20
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 577
    Points : 5 753
    Points
    5 753
    Par défaut
    J'ai écris plus rudimentaire, et ça ne marche pas (le load, comme toi).
    Je n'arrive pas à debugger pour identifier d'où vient le soucis.
    Plus j'apprends, et plus je mesure mon ignorance (philou67430)
    Toute technologie suffisamment avancée est indiscernable d'un script Perl (Llama book)
    Partagez vos problèmes pour que l'on partage ensemble nos solutions : je ne réponds pas aux questions techniques par message privé
    Si c'est utile, say

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 3 123 DernièreDernière

Discussions similaires

  1. Erreur avec NOT EXISTS : expression absente
    Par Battosaiii dans le forum SQL
    Réponses: 4
    Dernier message: 29/06/2011, 16h18
  2. Réponses: 3
    Dernier message: 22/12/2007, 14h06
  3. [Débutant][Conception] Erreur avec une classe interne
    Par Devil Redneck dans le forum Général Java
    Réponses: 5
    Dernier message: 11/06/2004, 15h45
  4. Erreur avec les ADO
    Par megane dans le forum Bases de données
    Réponses: 7
    Dernier message: 08/03/2004, 21h37
  5. Erreur avec WM_COMMAND (BN_CLICKED)
    Par cyberlewis dans le forum Windows
    Réponses: 2
    Dernier message: 09/02/2004, 00h25

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