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. #21
    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
    Ça me surprend, seulement parce que j'ai 3 ou 4 programmes pour lesquels c'est passé.

    Bon, abandonne, si non ça va me mettre mal à l'aise
    MERCI Beaucoup

  2. #22
    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
    Pourrais-tu faire, dans le même script, ceci :
    - définir une variable $mp3_lit avec le contenu en dur ("ce qui marche") et appeler MediaPlayer avec pour écouter
    - définir un peu plus loin une variable $mp3_cat avec le contenu avec catfile et appeler Mediaplayer pour voir que ça plante
    - ajouter le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    if ($mp3_lit ne $mp3_cat) {
      print "MP3 files differs\n[$mp3_lit]\n[$mp3_cat]\n";
    }
    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. #23
    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
    Pas de changement
    J'entends bien le 1er load dans les deux cas.
    Le second load plante dans les deux cas avec MP3 files differs

    j'ai essayé les deux :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    #$fichier_mp3 = "E:\\_APPLI\\Arabe\\Ass_1\\CDdecoup\\LLc_009\\FicTitre.mp3";
    #$fichier_mp3 = 'E://_APPLI//Arabe//Ass_1//CDdecoup//LLc_009//FicTitre.mp3';
    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
    #####################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";
     
     
    	#	my $mp3_lit = 'E://_APPLI//Arabe//Ass_1//CDdecoup//LLc_009//FicTitre.mp3';
    		my $mp3_lit = "E:\\_APPLI\\Arabe\\Ass_1\\CDdecoup\\LLc_009\\FicTitre.mp3";
    		sleep(1);
    		$winmm->load($mp3_lit);
    		$winmm->play;
    		sleep(4);
     
    		my $mp3_cat = File::Spec::Unix->catfile( $Repertoire, 'FicTitre.mp3' );
    		if ($mp3_lit ne $mp3_cat) {
      		print "MP3 files differs\n[$mp3_lit]\n[$mp3_cat]\n";
    		}
     
    		$fichier_mp3 = File::Spec::Unix->catfile( $Repertoire, $mp3_cat );
    		$winmm->load($fichier_mp3);
    		$winmm->play;
    		sleep(4);
     
    		exit;

  4. #24
    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
    Je poursuis ici :

    Les chemins sont systématiquement différents.
    A la limite le deuxième essais serait meilleurs rien que des / ou //

    Cependant j'avais aussi des doutes et j'avais essayé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    #$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";
    Une fois modifiés, les chemins en dur plantaient aussi !

    Le code devient illisible mais :
    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
    #####################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 "\chemins triturés\n";
    	print "FICMP3_1040=$fichier_mp3=\n\n\n";
     
     
    	$fichier_mp3 = File::Spec::Unix->catfile( $Repertoire, $fichier_mp3 );
    	$winmm->load($fichier_mp3);
    	$winmm->play;
    	sleep(4);
     
    	print "FICMP3_1040=$fichier_mp3=\n\n\n";
    ça plante avant le print

  5. #25
    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
    Bonsoir,

    Je viens d'essayer ce programme et ça fonctionne chez moi :
    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;
    use Win32::MediaPlayer;
     
    my $Time             = 0;
    my $winmm            = new Win32::MediaPlayer;
    my $Repertoire       = "Z:/Ma musique/S/Snow Patrol/A Hundred Million Suns/";
    my $Fic              = "Crack The Shutters.mp3";
    my $fichier_Trad_Ora = File::Spec->catfile( $Repertoire, $Fic );
    $winmm->load($fichier_Trad_Ora);
    $winmm->play;
    $winmm->volume(80);
    $Time = $winmm->length;
    sleep(15);
    $winmm->close;
    Je suis sous Strawberry Perl 5.20, windows 8.1 et 64-bits. J'ai Win32::MediaPlayer 0.3 et mon programme est encodé en UTF-8 SANS BOM.

  6. #26
    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,
    MERCI pour le retour !

    C'est rassurant !
    moi aussi celui-ci fonctionne !
    Je suis en Strawberry Perl 5.20, win7 64-bits.
    J'ai Win32::MediaPlayer 0.3 et mon programme est encodé en UTF-8 SANS BOM.

    Dans celui qui ne fonctionne pas j'ai au départ :
    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 Carp;
    use Tk;
    use Tk::LabFrame;
    use Tk::ROText;
    use Tk::Photo;
    use TestModule;
    use English '-no_match_vars';
    use File::Spec;
    use File::Spec::Win32;
    use Config::Std;
    use Win32::MediaPlayer;
    use File::Basename;
    use Win32::API;
    $Win32::API::DEBUG = 1;
    J'ai supprimé un max :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    #!/usr/bin/perl
    use strict;
    use warnings;
    use utf8;
    use Tk;
    use Tk::LabFrame;
    use Tk::ROText;
    use Tk::Photo;
    use File::Spec;
    use File::Spec::Win32;
    use Config::Std;
    use Win32::MediaPlayer;
    J'ai toujours le plantage.


    [EDIT 05:00] Ajout
    Pour info j'ai inclus la lecture d'un .mp3 dans un autre programme (Regex.pl que j'ai collé sur le forum) et qui utilise :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    #!/usr/bin/perl
    use warnings;
    use strict;
    use utf8;
    use Tk;
    use Tk::Dialog;
    use Tk::Photo;
    use Tk::LabFrame;
    use Tk::ROText;
    use File::Spec;
    use Config::Std;
     
    use Win32::MediaPlayer;										# Pour jouer un fichier son
    Ça fonctionne parfaitement

    Les autres programmes tourneront en 5.20
    Je vais conserver la 5.12 pour faire tourner celui qui plante en 5.20
    A mon niveau, ça n'a pas de conséquence grave, mais je ne vois pas une PME ou une administration se satisfaire d'une pareille situation...

    Encore MERCI pour le temps que tu as passé sur le pb
    et surtout pour les FAQ dans lesquelles je puise à grandes brassées
    @+

  7. #27
    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
    Juste pour info, ça a fonctionné correctement à 3 reprises dont 2 hier.
    Comme je n'y croyait pas, à la 3ème j'ai sauvegardé ess.pl sans y avoir touché en ess_sav.pl
    puis j'ai relancé, les 2 plantent à nouveau indéfiniment...

    Bon j'arrête les frais.
    Encore MERCI pour vos interventions !

    [EDIT 08:03] Ajout reboot :
    Craignant un pourrissement de la mémoire j'ai fait une fermeture/ouverture de session, plusieurs fois, ça a fonctionné 1 fois la première !
    Revigoré, j'ai rebooté le PC à 2 reprises, ça n'a plus fonctionné

    Nous vivons une époque formidable c'est nerveux

    J'effacerai toutes les images inutiles dans 2 ou 3 jours...
    Voici les deux dernières OK_UneFois.png & HS_SansRienChangerAuPrecedent.png :

  8. #28
    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,

    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
    #!/usr/bin/perl
    use strict;
    use warnings;
    use utf8;
    use File::Spec;
    use Win32::MediaPlayer;
    use Tk;
    use Tk::LabFrame;
    use Tk::ROText;
    use Tk::Photo;
    use File::Spec;
    use File::Spec::Win32;
    use Config::Std;
     
    my $Time             = 0;
    my $winmm            = new Win32::MediaPlayer;
    my $Repertoire       = "Z:/Ma musique/S/Snow Patrol/A Hundred Million Suns";
    my $Fic              = "Crack The Shutters.mp3";
    my $fichier_Trad_Ora = File::Spec->catfile( $Repertoire, "Crack The Shutters.mp3" );
    $winmm->load($fichier_Trad_Ora);
    $winmm->play;
    $winmm->volume(80);
    $Time = $winmm->length;
    sleep(35);
    $winmm->close;
    Fonctionne chez moi. J'ai testé à 15 reprises , même en lançant plusieurs programmes en même temps.

  9. #29
    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 !
    Fonctionne chez moi. J'ai testé à 15 reprises , même en lançant plusieurs programmes en même temps.
    Je n'en doute pas une seconde, les autres fonctionnent aussi chez moi
    MERCI et bonne journée !

  10. #30
    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
    Il faudrait peut-être tester le programme complet non ?

  11. #31
    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
    En fait ess.pl c'est le programme arabe.pl complet que je triture.
    Il fait plus de 3000 lignes
    Je te l'avais passé une fois, j'avais dû le couper en 2.
    Plus faire un extrait cohérent des cours c'est maous !

    Si ce n'est pas un modèle du genre, il tourne super bien en 5.12 en l'état, sans modif, depuis 2012...

    Je viens de reproduire l'ano, je l'ai filmée, mais la séquence fait 110 Mo, je ne sais pas si ça va passer, elle est spinoza.texte.free.fr/HDPVR_20140722_0902.ts
    Le son est mauvais, mais on voit bien le premier lancement est OK, le deuxième plante !

    Je veux bien qu'en changeant de version, il y ait des améliorations, comme celles sur lesquelles je suis tombé, du genre initialisation API Windows incomplète...
    mais là, aléatoire de surcroît, je ne vais pas m'appesantir dessus... à l'occasion si j'ai une idée...
    Comme je le faisais remarquer dans la discussion sur le choix Active/Strawberry : l'administration n'est plus mon job, s'il faut passer des journées pour pouvoir utiliser ce qui fonctionnait avant, c'est pas du boulot...

    Au fait j'irai y faire un +1 dans Strawberry, qui me convient parfaitement. [Edit : Plus possible ]
    Avant de l'installer j'avais essayé Active_5.18 il n'y avait même pas Tk dans ppm graphique !

    Ce sont tes commentaires favorables qui m'ont décidé, je ne regrette pas

    Là tous mes autres outils sont disponibles et fonctionnent parfaitement.

    Encore MERCI pour ta proposition, mais franchement c'est un boulot conséquent, tout ça pour des chemins de fichier construits en dur ou avec File::Spec ...

  12. #32
    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
    Désolé de ne pouvoir aidé, je n'arrive même pas à lancer MP avec un chemin en dur :/
    Quelle est ta version installée de Win32::API ? (et celle de djibril ?).
    La mienne : 0.77 (semble-t-il la dernière)
    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. #33
    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,

    Comme je l'ai écrit plus haut, je ne pousse pas plus mes investigations... sauf lumière subite !
    Ceci dit perso j'ai tout mon temps, et peux te fournir toutes les infos qui te passent par la tête... si c'est pour satisfaire tes besoins ou ta curiosité...
    Donc ne sois pas désolé, c'est moi qui suis gêné de vous avoir mis tous les deux à contribution !

    Pour lancer le petit programme rudimentaire, Win32::API n'est pas nécessaire.
    Avec seulement Win32::MediaPlayer , bien sympa, tu devrais pouvoir écouter un mp3
    Je suis étonné qu'il ne fonctionne pas dans un contexte simple

    Pour info :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Michel@MiDo ~
    $ perl -MWin32::MediaPlayer -E 'print $Win32::MediaPlayer::VERSION'
    0.3
    Michel@MiDo ~
    $ perl -MWin32::MediaPlayer -E 'print $Win32::API::VERSION'
    0.77
    Michel@MiDo ~
    $
    C'est effectivement la dernière, enfin celle que j'ai eu avec l'utilitaire cpan de la 5.20

  14. #34
    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
    Citation Envoyé par dmganges Voir le message
    Pour lancer le petit programme rudimentaire, Win32::API n'est pas nécessaire.
    Si si justement, Win32::MediaPlayer repose essentiellement sur Win32::API, d'où ma question. Sans Win32::API installé, Win32::MediaPlayer ne peut pas fonctionner (Win32::MediaPlayer fait un "use" de Win32::API et ne contient en fait que de simples méthodes d'interface faisant appel à Win32::API).
    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. #35
    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
    Oui, il est utilisé !
    Je voulais dire qu'il n'est pas nécessaire d'y faire appel :
    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;
    Effectivement lorsqu'il y a une erreur on voit bien qu'il l'utilise !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Tk::Error: Win32::API::Call: parameter 1 had a buffer overflow at C:/Strawberry/
    perl/site/lib/Win32/MediaPlayer.pm line 120.

  16. #36
    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
    Et donc ?
    Quelle est sa version ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    perl -MWin32::API -e "print $Win32::API::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

  17. #37
    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
    0.77

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    E:\_APPLI\Arabe>perl -MWin32::API -e "print $Win32::API::VERSION"
    0.77
    E:\_APPLI\Arabe>

  18. #38
    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
    OK, donc ça ne vient pas non plus de là
    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

  19. #39
    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
    Je m'en doutais
    D'autant que chez moi c'est aléatoire.
    Les premières fois je pensais avoir fait une fausse manip...
    Du coup j'ai tenté de filmer l'anomalie, par chance, juste après un boot, j'ai pu la reproduire
    A mes débuts quand je disais à mes vieux collègues que l'ordinateur n'en faisait qu'à sa tête ils se regardaient en riant et m'invitaient à revoir mon code

    Quand tu y penses relance-le tel quel, juste après un boot ou un changement de session...

  20. #40
    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
    Eurêka

    Bonjour,

    J'ai trouvé la parade, mais je n'arrive pas à formuler une explication cohérente
    Peu importe l'explication, je vous livre mes constatations.
    En faisant un autre petit programme, j'ai pu reproduire l'anomalie.

    Il y a bien une différence de comportement Active_5.12 / Strawberry_5.20

    Je n'arrive pas à cerner si elle vient :
    - de File::Spec
    - du fichier de configuration géré avec Config::Std, le fichier est initialement sauvegardé UTF8 NO BOM
    - le résultat d'un sprintf
    - ...???

    En tout état de cause lorsque le nom du fichier à destination de Win32::MediaPlayer

    est constitué de cette façon :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $NumFic3 = sprintf '%03d', $numfic;
    $fichier_mp3 = File::Spec->catfile( $RepBase, $config{$SelectSec}{repertoire}, "Fic_$NumFic3.mp3" );
    En Active_5.12 ça passe, en Strawberry_5.20 ça casse

    Avant l'appel de Win32::MediaPlayer, j'ai ajouté :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $fichier_mp3 = encode("iso-8859-16", $fichier_mp3);

    Donc :

    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
    #! perl
    use warnings;
    use strict;
    use utf8;
    use Tk;
    use Tk::Photo;
    use Tk::LabFrame;
    use Tk::ROText;
    use File::Spec;														# Permet une meilleure gestion des noms des chemins sous tous les OS
    use Encode;																# Pour encoder en iso-8859-16
    use Config::Std;													# Lecture/ecriture d'un fichier .ini
    use Win32::MediaPlayer;										# Lecture d'un fichier son
     
    my $winmm = new Win32::MediaPlayer;
     
    ....
    # éventuellement :
    $numfic++;
    ....
     
    $NumFic3 = sprintf '%03d', $numfic;
    $fichier_mp3 = File::Spec->catfile( $RepBase, $config{$SelectSec}{repertoire}, "Fic_$NumFic3.mp3" );
    $fichier_mp3 = encode("iso-8859-16", $fichier_mp3);
     
    $winmm->load($fichier_mp3);
    		$winmm->play;
    		$winmm->volume(100);
    		$Time = $winmm->length;
    		$Pause = ($Time + 100);
    		Temporisation ($Pause);
    		$winmm->close;
    Ça passe tant en Active_5.12 que Strawberry_5.20

    En Strawberry ça passait tant que je sauvegardais le numéro du fichier dans le fichier de configuration et que je l'utilisais tel quel avec File::Spec
    L'anomalie est apparut, lorsque pour jouer les fichiers suivants, j'ai manipulé avec sprintf, le numéro qui fait parti du nom du fichier...

    Philou67430, si tu as le temps essaye d'encoder le nom du fichier en iso-8859-16 avant de le loader...
    Autant ça lui suffira

    Il semble que Win32::MediaPlayer soit pointilleux sur le l'encodage du nom de fichier...

    Désolé d'avoir abusé de votre temps.

    Si vous souhaitez que je fasse d'autres tests pour mieux cerner la cause, je suis entièrement disponible.
    Mais seulement si vous avez du temps à perdre...

    Encore MERCI pour votre aide.

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 3 PremièrePremière 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