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

Delphi Discussion :

Problème exécution .EXE


Sujet :

Delphi

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    66
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2007
    Messages : 66
    Points : 32
    Points
    32
    Par défaut Problème exécution .EXE
    Bonjour,

    Quand j'exécute mon programme à partir de Delphi, toutes mes commandes fonctionnent.
    Mais si je lance seulement l'EXE, là une option me permettant de rentrer le nombre de fois où un son doit être lancé (grâce à un edit), ne fonctionne plus .
    C'est sûrement dû à la variable que j'utilise qui n'est plus prise en compte...

    Une idée ?

  2. #2
    Membre habitué Avatar de Ludo_360
    Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    295
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 295
    Points : 191
    Points
    191
    Par défaut
    Montre le code parceque la je ne vois pas trop le problème soulevé...

  3. #3
    Membre chevronné
    Avatar de Clorish
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 474
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 474
    Points : 2 158
    Points
    2 158
    Par défaut
    Citation Envoyé par Ludo_360
    Montre le code parceque la je ne vois pas trop le problème soulevé...
    Surtout que Delphi compile l'exe et lance lui meme l'exe
    On passe du temps a vous repondre, alors soyez sympas, passez du temps ..... a vous relire !
    --
    Pourquoi tant de haine pour cette pauvre aide Delphi ????
    Aiiimezzz laaaaa .... Si-Non-Cham-Pi-Gnon !!!
    --
    Pour plus de Renseignements : Venez me rejoindre sur Msn .... Promis je mords pas

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    66
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2007
    Messages : 66
    Points : 32
    Points
    32
    Par défaut
    Partie du programme utilisant la variable concernée :

    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
     
    var
        B : integer;
     
    procedure TForm1.btJouerClick(Sender: TObject);
    begin
        Lecteur;
    end;
     
    procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
    begin
    if (Key <> chr(8)) and ((Key < '0') or (Key > '9')) then
    begin
    Key := chr(0); // Permet d'annuler la frappe de la touche
    end;
    end;
     
    procedure TForm1.Lecteur;
    begin
     
        if RadioBtmont.Checked then
        begin
            MediaPlayer1.FileName := 'C:\Sons\MONTE.WAV';
            MediaPlayer1.Open;
            MediaPlayer1.Notify := true;
            MediaPlayer1.OnNotify := NotifyProc; 
            B:= StrToInt(Edit1.Text);
            MediaPlayer1.Play;
            Arretautorise := true;  // évite un bug si nous appuyons sur arrêter
                                           // alors q'aucun son WAV n'a été lancé
        end;
     
    procedure TForm1.NotifyProc(Sender: TObject);
    begin
       with Sender as TMediaPlayer do
              begin
               if Mode = mpStopped
                  then begin
                        Dec(B);
                        if B > 0 then Play
                       end;
               Notify := True
              end
    end;
     
    procedure TForm1.btArreterClick(Sender: TObject);
    begin
        if Arretautorise then
        begin
            MediaPlayer1.Stop;
        end;
    end;

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    66
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2007
    Messages : 66
    Points : 32
    Points
    32
    Par défaut
    Surtout que Delphi compile l'exe et lance lui meme l'exe
    C'est pour ça qu'il y a quelque chose qui m'échappe...

  6. #6
    Membre chevronné
    Avatar de Clorish
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 474
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 474
    Points : 2 158
    Points
    2 158
    Par défaut
    et c'est quoi exactement les symptomes ?
    On passe du temps a vous repondre, alors soyez sympas, passez du temps ..... a vous relire !
    --
    Pourquoi tant de haine pour cette pauvre aide Delphi ????
    Aiiimezzz laaaaa .... Si-Non-Cham-Pi-Gnon !!!
    --
    Pour plus de Renseignements : Venez me rejoindre sur Msn .... Promis je mords pas

  7. #7
    Membre habitué Avatar de Ludo_360
    Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    295
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 295
    Points : 191
    Points
    191
    Par défaut
    Si tu affecte une valeur arbitraire à B, à la form create par exemple... est-ce que ton exe va jouer le morceau le nombre de fois voulu?

  8. #8
    Membre habitué Avatar de Ludo_360
    Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    295
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 295
    Points : 191
    Points
    191
    Par défaut
    Si tu affecte la valeur à B avant d'appeller ta fonction NotifyProc:

    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
    procedure TForm1.Lecteur;
    begin
     
        if RadioBtmont.Checked then
        begin
            MediaPlayer1.FileName := 'C:\Sons\MONTE.WAV';
            MediaPlayer1.Open;
            MediaPlayer1.Notify := true;
            B:= StrToInt(Edit1.Text);
            MediaPlayer1.OnNotify := NotifyProc; 
    
            MediaPlayer1.Play;
            Arretautorise := true;  // évite un bug si nous appuyons sur arrêter
                                           // alors q'aucun son WAV n'a été lancé
        end;
      
    procedure TForm1.NotifyProc(Sender: TObject);
    begin
       with Sender as TMediaPlayer do
              begin
               if Mode = mpStopped
                  then begin
                        Dec(B);
                        if B > 0 then Play
                       end;
               Notify := True
              end
    end;

  9. #9
    Membre chevronné
    Avatar de Clorish
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 474
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 474
    Points : 2 158
    Points
    2 158
    Par défaut
    Citation Envoyé par Ludo_360
    Si tu affecte la valeur à B avant d'appeller ta fonction NotifyProc:
    Le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MediaPlayer1.OnNotify := NotifyProc;
    N'appelle pas directement la procedure Notifyproc mais l'affecte a l'evenement.
    Cette procedure sera appelée quand le message Notify sera lancé.
    Ce message sera lancé quand la procedure le lancant sera executé, et le traitement de ce message se fera quand l'applciation tournera pas.
    2 raisons qui font que le message ne peut etre lancé ni traité tant que la procedure est en cours .....
    Il peut eventuelement etre lancé si l'executon se fait dans un thread parallele .. mais en aucun cas traité car le traitement fait parti du thread.
    De toute maniere il le pourra pas etre lancé tant que l'appel a play ne sera pas fait.



    Citation Envoyé par Ludo_360
    Si tu affecte une valeur arbitraire à B, à la form create par exemple... est-ce que ton exe va jouer le morceau le nombre de fois voulu?
    Elle l'est deja .... Delphi initialise les variables globales (a 0)
    Au pire elle n'est pas initialisee et contient un residu memoire a l'adresse de cette variable ... donc forcement quelque chose


    Ca non plus,
    On passe du temps a vous repondre, alors soyez sympas, passez du temps ..... a vous relire !
    --
    Pourquoi tant de haine pour cette pauvre aide Delphi ????
    Aiiimezzz laaaaa .... Si-Non-Cham-Pi-Gnon !!!
    --
    Pour plus de Renseignements : Venez me rejoindre sur Msn .... Promis je mords pas

  10. #10
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    66
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2007
    Messages : 66
    Points : 32
    Points
    32
    Par défaut
    En affectant la valeur 5 à B :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
            B :=5;
            MediaPlayer1.Notify := true;
            MediaPlayer1.OnNotify := NotifyProc1        
            MediaPlayer1.Play;
    En faisant F9 à partir de delphi, le son est joué 5 fois.
    Je ferme delphi, et je lance l'EXE directement.
    Là le son n'est joué qu'une seule fois..

  11. #11
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    66
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2007
    Messages : 66
    Points : 32
    Points
    32
    Par défaut
    Clorish, j'ai pas bien compris ton explication...
    Qu'est ce que je dois faire ?

  12. #12
    Membre chevronné
    Avatar de Clorish
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 474
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 474
    Points : 2 158
    Points
    2 158
    Par défaut
    Citation Envoyé par revsys
    Clorish, j'ai pas bien compris ton explication...
    Qu'est ce que je dois faire ?
    J'en sais rien ... j'expliquais juste pourquoi les solutions proposées par ludo_360 ne corrigerais rien

    A mon avis le probleme est ailleur que dans ce code.

    Verifie bien que tu lance bien le meme exe que Delphi ...
    On sais jamais, des fois avec les changements de reperoires ...
    On passe du temps a vous repondre, alors soyez sympas, passez du temps ..... a vous relire !
    --
    Pourquoi tant de haine pour cette pauvre aide Delphi ????
    Aiiimezzz laaaaa .... Si-Non-Cham-Pi-Gnon !!!
    --
    Pour plus de Renseignements : Venez me rejoindre sur Msn .... Promis je mords pas

  13. #13
    Membre habitué Avatar de Ludo_360
    Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    295
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 295
    Points : 191
    Points
    191
    Par défaut
    Regarde dans Projet -> Option -> onglet "Répertoire/ condition" et vérifie le chemin de ton .exe... On ne sait jamais

  14. #14
    Membre habitué Avatar de Ludo_360
    Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    295
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 295
    Points : 191
    Points
    191
    Par défaut
    Ah bah clorish ta di la même chose... pardon :s

  15. #15
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    66
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2007
    Messages : 66
    Points : 32
    Points
    32
    Par défaut
    En testant l'EXE qui est le bon (modifié à la bonne heure) sur un autre pc, je me retrouve avec le même problème

  16. #16
    Membre habitué Avatar de Ludo_360
    Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    295
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 295
    Points : 191
    Points
    191
    Par défaut
    ...

    C'est bizar

  17. #17
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    66
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2007
    Messages : 66
    Points : 32
    Points
    32
    Par défaut

  18. #18
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    66
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2007
    Messages : 66
    Points : 32
    Points
    32
    Par défaut
    J'ai trouvé la cause du problème mais je ne sais vraiment pas comment faire pour y remédier.
    J'utilise donc la procedure NotifyProc qui "signale" la fin de lecture (mpStopped) et décrémente B. J'ai donc théoriquement une boucle qui fonctionne.
    Comme je l'ai dit plus haut, en exécutant par Delphi (F9), tout fonctionne (je rentre 5, le son est joué 5 fois) donc je suppose que NotifyProc fonctionne tout autant.
    Par contre, en exécutant à partir de l'EXE, le signal mpStopped ne marche plus : le son ne se joue qu'une seule fois.
    En appuyant sur la touche Stop, le son reboucle (mpStopped devient alors actif).
    Par exemple je rentre 5, le son se joue 1 fois puis 'arrête, je réappuie sur stop, il reboucle et ainsi de suite jusqu'à que 5 passe à 0.

    Donc mpStopped de NotifyProc est actif avec delphi mais pas avec l'EXE

    Si quelqu'un avait une solution, je prends avec plaisir

  19. #19
    Membre habitué Avatar de Ludo_360
    Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    295
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 295
    Points : 191
    Points
    191
    Par défaut
    Si ce qu'a dit Clorish est exact, delphi compile puis execute ton .exe, qui est logiquement le même, donc le déroulement devrait être identique... C'est bizar...

  20. #20
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    66
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2007
    Messages : 66
    Points : 32
    Points
    32
    Par défaut
    Oui et là je ne sais vraiment pas comment résoudre ce problème...
    NotifyProc n'utilise pas quelque chose de Delphi qui ne réapparait pas en dehors ?

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

Discussions similaires

  1. [Compiler] Problème exécution .exe
    Par franck34matlab dans le forum Images
    Réponses: 8
    Dernier message: 07/06/2013, 13h41
  2. Problème exécution exe sur autre PC
    Par allergique dans le forum VB.NET
    Réponses: 6
    Dernier message: 04/01/2012, 15h32
  3. Problème dans l'exécutable .exe
    Par vincien35 dans le forum JDBC
    Réponses: 0
    Dernier message: 13/10/2011, 14h37
  4. Réponses: 4
    Dernier message: 09/12/2005, 22h17
  5. [VB.NET] Problème exécution en mode release.
    Par leSeb dans le forum Windows Forms
    Réponses: 2
    Dernier message: 07/01/2005, 17h39

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