Salut,
Je dois lors de l'execution de mon programme, ouvrir un fichier .csv à l'écran avec Excel, J'ai trouvé dans l'aide TFileRun mais aucun moyen de savoir comment l'utiliser...
Merci...
Salut,
Je dois lors de l'execution de mon programme, ouvrir un fichier .csv à l'écran avec Excel, J'ai trouvé dans l'aide TFileRun mais aucun moyen de savoir comment l'utiliser...
Merci...
Le code suivant m'a permis d'ouvrir un fichier txt avec l'éditeur associé :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 TFileRun* Fichier = new TFileRun(this); Fichier->FileName = "C:\\MonFichier.txt"; Fichier->Operation = "open"; Fichier->Execute(); delete Fichier;
Je te remercie, mais il me met "undefined symbol TFileRun" et dans l'aide de builder il n'est pas écrit ce que je devrais eventuellement déclarer ?
C'est bizarre qu'il ne le reconnaisse pas ?
Il faut donc ajouter cette ligne dans ton headerEnvoyé par Aide de Builder sur TFileRun
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 #include <ExtActns.hpp>
OK je te remercie..
Par contre maintenant il me sort une erreur sur cette ligne :
Au "this" et me dis :
Code : Sélectionner tout - Visualiser dans une fenêtre à part TFileRun * Fichier = new TFileRun(this);
'Could not find a match for 'TFileRun::TFileRun(MaClasse * const)'
La classe TFileRun a besoin d'avoir un propriétaire pour pouvoir être instanciée. Dans l'exemple que je t'ai donné, j'ai utilisé this qui correspond à ma fiche de test.Envoyé par Fred2209
Vue que je ne sais pas dans quel contexte tu veux utiliser TFileRun, je ne peux t'aider plus...
Nb :Tu aurais pu trouver toutes ses infos dans l'aide en appuyant sur F1
En fait je voudrais lancer cette feuille Excel donc j'ai insérer ton morceau de programme dans une fonction qui est elle meme déclarée dans une classe.
Alors j'ai essayé à la place de "this" de mettre le nom de ma classe et la il me met " improper use of typedef 'maclasse' "...
Je ne vois pas ce que je pourrais mettre comme propriétaire...
Prototype du contructeur de TFileRun
Pour que TFileRun soit instancié, il faut un propriété dérivant de TComponent pour que cela marche.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 inline __fastcall virtual TFileRun(Classes::TComponent* AOwner):
Or, TComponent est l'ancêtre commun à tous les composants susceptibles d'apparaître dans le concepteur de fiches.
Cela ne fonctionnera donc pas dans ta classe à part si tu passes un composant visuel comme propriété de ta classe.
Tu dois également pouvoir faire ce que tu désires avec la fonction ShellExecute...
Pour ce qui est de ShellExecute apparement dans les tutoriels ils précisent que c'est pour lancer un executable alors que moi c'est un .csv comme pour toi un .txt qui vont s'ouvrir avec leur programme respectif...
Sinon, je te promets tu m'as paumé... qu'appelles-tu "ta fiche" ??
ShellExecute fonctionne pour les exécutables mais également pour les fichiers de données tant qu'un exécutable pouvant ouvrir ce dît fichier existe. Si Excel le supporte, tu peux également essayer de lancer Excel avec ton fichier en paramètre.Envoyé par Fred2209
Ce que j'appelle fiche, c'est ta classe TForm de base (et c'est, à mon avis, le sens donné par Borland)
J'ai essayé avec mon TForm de base ça ne marche pas non plus...
j'ai lu vite fait le fil du topic...
perso j'ouvres mes fichiers comme ça:
ça ouvre le fichier avec le prog adéquat et si pas de prog associé à l'extension, ça demande de choisir le programme pour ouverture
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 int ErrNo ; FilePath = chemin_de_mon_fichier, ErrNo =(int)ShellExecute(NULL,"open",FilePath.c_str(),"","",SW_SHOW); if(ErrNo==SE_ERR_NOASSOC) { String OpenWithCommandParam = "shell32.dll,OpenAs_RunDLL " + FilePath; ShellExecute(NULL,"open","rundll32.exe",OpenWithCommandParam.c_str(),"",SW_SHOW); }
en espérant t'aider
A+
ça y est merci à vous !!
ça marche avec ShellExecute !!!![]()
Fred2209, il y a aussi l'API ShellExecuteEx qui permet d'utiliser une structure SHELLEXECUTEINFO dans la quelle tu peux préciser quel exécutable tu veux utiliser en plus du fichier à ouvrir. Sans parler de CreateProcess qui est un peu plus compliquer à utiliser.
bakaneko, pourquoi utilises-tu préférentiellement le bouton "Citer" plutôt que "Ajouter une réponse" ? Cela surcharge le fil inutilement, me semble-t-il![]()
Parce que cela permet de devoir rechercher, dans les posts précédents, l'origne de mes réponses.Envoyé par Altau
Partager