OpenDialog, shellexecute et Word [Résolu]

Signaler
Messages postés
6
Date d'inscription
mardi 28 mars 2006
Statut
Membre
Dernière intervention
26 juillet 2007
-
Messages postés
3819
Date d'inscription
vendredi 23 juillet 2004
Statut
Modérateur
Dernière intervention
2 novembre 2020
-
Salut, je suis un peu nouveau en programmation Delphi et mon problème est le suivant:

un bouton ouvre une opendialog puis un shellexecute ouvre word qui doit
normalement ouvrir le fichier selectionné dans l'opendialog.

Seulement word me dit ne pas pouvoir ouvrir ce fichier (alors qu'il s'ouvre très bien depuis word lui-même)

voici le code que j'utilise :

ShellExecute(0,'open', 'winword.exe',
pchar(opendialog1.filename),nil, SW_normal);



est-ce un problème word ou delphi ( ou du programmeur !!) ??

merci d'avance
Jeff

6 réponses

Messages postés
3819
Date d'inscription
vendredi 23 juillet 2004
Statut
Modérateur
Dernière intervention
2 novembre 2020
34
Les guillemets sont la pour faire passer la "pilule"


Non trêve de plaisanteries si tu as un nom de fichier long (et il y a 9 chances sur 10 pour que ce soit le cas) Ex. : C:\Mon répertoire\Mes fichiers\Mon fichier texte.doc ShellExecute ne reconnaît pas les noms longs, il est resté sur le format 8.3 (Dos Win3.1 Win95) et donc deux solutions sont possibles, soit tu convertis le tout en format 8.3 ce qui donne un truc du genre : C:\Monrep~1\MesFic~1\MonFic~1.doc où tu mets le tout entre guillemets ce qui a mon avis, est plus simple et plus rapide.

Et désolé pour la bourde, effectivement il faut mettre les guillemets dans l'appel à PChar et non comme je l'avais écris avant, en dehors, ce qui est logique mais je vois que tu as corrigé cette erreur tout seul.

PS := au cas ou le format 8.3 ca veut dire 8 caractères maximum pour le nom et 3 caractères maximum pour l'éxtension.

Voilà tout est dit enfin je crois

@+
Cirec
Messages postés
3819
Date d'inscription
vendredi 23 juillet 2004
Statut
Modérateur
Dernière intervention
2 novembre 2020
34
Pourrais-tu juste cliquer sur Réponse Acceptée Stp.
Merci
@+
Cirec
Messages postés
6
Date d'inscription
mardi 28 mars 2006
Statut
Membre
Dernière intervention
26 juillet 2007

Ca y est !!

Je crois que j'ai trouvé ! Voilà le code que j'utilise :



ShellExecute(0,'open',pchar(opendialog1.FileName),nil ,nil, SW_normal);



et là, ça marche . ( je sais pas pourquoi, mais bon ! )

Désolé pour le dérangement et surement à très bientôt .

Jeff
Messages postés
3819
Date d'inscription
vendredi 23 juillet 2004
Statut
Modérateur
Dernière intervention
2 novembre 2020
34
Salut,
parce que l'extension est connue du système et donc Windows l'ouvre avec le logiciel approprié.

Si tu lui donne un fichier avec une extension .TXT il l'ouvrira avec le Bloc Notes.

Essaye voir comme ceci :

ShellExecute(0,'open', 'winword.exe', '"' + pchar(opendialog1.filename) + '"',nil, SW_normal);

@+
Cirec
Messages postés
6
Date d'inscription
mardi 28 mars 2006
Statut
Membre
Dernière intervention
26 juillet 2007

Salut,

j'ai eu une incompatibilité String et Pchar, alors j'ai modifié comme ça:

ShellExecute(0,'open', 'winword.exe', pchar('"' + opendialog1.filename + '"'),nil, SW_normal)

et la, ça marche impec !

Donc j'ai bien compris que la commande winword.exe force l'application à utiliser word, et c'est justement ce que je voulais, alors merci du coup de pouce.
Par contre, je ne vois pas à quoi servent les '"' + qui entourent l'opendialog1.filename, si je les met pas, ça marche pas !

Encore merci
A+
Jeff
Messages postés
6
Date d'inscription
mardi 28 mars 2006
Statut
Membre
Dernière intervention
26 juillet 2007

Je vois que tu connais le sujet sur le bout des doigts.

Merci beaucoup de ces précieux renseignements, bien expliqués de manière très claire.



A+


Jeff