Ouvrir un fichier avec son programme delphi [Résolu]

Signaler
Messages postés
20
Date d'inscription
mardi 1 novembre 2005
Statut
Membre
Dernière intervention
25 juillet 2006
-
Messages postés
418
Date d'inscription
mardi 3 janvier 2006
Statut
Membre
Dernière intervention
26 novembre 2013
-
Salut a tous,

J'ai coder un lecteur audio qui marche parfaitement seulement j'aimerais que l'orque je fais Clique droit  (sur un mp3 par exemple) et que j'execute avec mon projet, le lecteur ouvre le fichier séléctionné.
Je pense que ça doit se placer dans:
Procedure Tform1.FormCreate ou Tform1.FormActivate enfin je suis pas sûr.

Si quelqu'un pouvait me mettre sur la voix ou me donner le code, ça serait sympa

Merci d'avance pour vos réponses.
@++

8 réponses

Messages postés
418
Date d'inscription
mardi 3 janvier 2006
Statut
Membre
Dernière intervention
26 novembre 2013
3
Salut,

Je viens de tester ceci et qui marche parfaitement avec les extensions .wav, .mid, .mp3 :

procedure TForm1.FormCreate(Sender: TObject);
begin
    FileName:= ParamStr(1);
    if FileName <> '' then  // ajouter : si l'extension est ...
    begin
      MediaPlayer1.Filename := Filename;
      MediaPlayer1.Open;
    end;
end;

A +
Messages postés
418
Date d'inscription
mardi 3 janvier 2006
Statut
Membre
Dernière intervention
26 novembre 2013
3
Salut,

Essaie ceci :

procedure TForm1.FormCreate(Sender: TObject);
begin    FileName:ParamStr(1);   // FileName variable string
    if FileName <> '' then TaProcedureOuvertureFichier;
end;

A +
Messages postés
20
Date d'inscription
mardi 1 novembre 2005
Statut
Membre
Dernière intervention
25 juillet 2006

Merci d'avoir répondu mais ça ne marche pas:

"Impossible de determiner le type du périphérique à partir de l'extension du nom de fichier donnée."

Si tu as une solution ou si qq'un d'autre a la solution a mon probleme, je suis toujours preneur :)

@+
Messages postés
20
Date d'inscription
mardi 1 novembre 2005
Statut
Membre
Dernière intervention
25 juillet 2006

Nikel merci bien!
Réponse rapide et efficace.

@++
Messages postés
4202
Date d'inscription
samedi 16 octobre 2004
Statut
Modérateur
Dernière intervention
13 juin 2020
37
RHAAA!

IF FILEEXISTS(FILENAME) THEN

c'est quoi c'te methode a deux france cinquante ancien.

on test pas un fichier en faisant <> '' parce que meme si non vide ... il n'est pas sur que le fichier existe.
donc FileExists
Messages postés
418
Date d'inscription
mardi 3 janvier 2006
Statut
Membre
Dernière intervention
26 novembre 2013
3
Salut f0xi,

Calme, calme...

if FileName <> '' :  ne fait que tester si un paramètre est envoyé au programme.
Si oui, bien sûr après, on fait un FileExist dans la procédure chargée d'ouvrir le fichier !!! (ok, je ne l'ai pas fait dans le code d'exemple)
Si tu fais :
   FileName:= ParamStr(1);
   if FileExists(FileName) then ...
tu testes l'existence d'un fichier dont le nom peut être = '' !

A +
Thierry
Messages postés
4202
Date d'inscription
samedi 16 octobre 2004
Statut
Modérateur
Dernière intervention
13 juin 2020
37
Le prend pas mal willy, c'est juste que la tu es dans la mauvaise direction :

Begin
  if ParamCount = 0 then begin
     MessageDlg('Vous devez passer un nom de fichier valide en parametre',
                mtWarning,[mbOk],0);
     Application.Terminate;
  end;
 
  FileName := ParamStr(1);

  if not FileExists(FileName) then begin

     MessageDlg('Le fichier : '+FileName+#13+#10+'n'existe pas.',

                mtWarning,[mbOk],0);

     Application.Terminate;

  end;

  MediaPlayer1.FileName := FileName;
  MediaPlayer1.Open;
end;

L'erreur est humaine, y'a rien d'agressif dans ce que je dis et je n'ai pas pour but de faire passer les autres pour des idiots car moi aussi je me trompe souvent.



 
Messages postés
418
Date d'inscription
mardi 3 janvier 2006
Statut
Membre
Dernière intervention
26 novembre 2013
3
Salut f0xi,

Merci pour la courtoisie de ta réponse.

Si je peux me permettre une remarque sur ton code : 
if ParamCount = 0 then ... Application.Terminate : il devient donc impossible de lancer l'application sans lui envoyer un nom de fichier en paramètre. Or notre ami tux22 voudrait avoir le choix : run avec clic droit sur fichier, ou run normal avec choix du fichier dans un OpenDialog.

Voici ce que, personnellement, je ferais :

if ParamCount > 0 then
begin
    FileName := ParamStr(1);
    if FileName <> '' then  // pour ne pas tester un nom vide
    begin
          if not FileExists(FileName) then
              MessageDlg('Le fichier : '+FileName+#13+#10+'n''existe pas.', 
                                      mtError,[mbOk],0)
         else  // test des extensions acceptées par l'application
          if Pos(ExtractFileExt(FileName), '.mid;.wav;.mp3') = 0 then
              MessageDlg('Cette application ne peut ouvrir ce type de fichier',
                                         mtError,[mbOk],0)
         else
         begin
              MediaPlayer1.FileName := FileName;
              MediaPlayer1.Open;
         end;
    end;
end;

A +
Thierry