Bonjour !
S'il vous plait, serait-il possible d'avoir le chemin complet de mon fichier projet (monprojet.dproj) pendant la phase d'execution de mon proramme.
merci d'avance de vos réponses.
cordialement,
Dibak
Discussion :








Bonjour !
S'il vous plait, serait-il possible d'avoir le chemin complet de mon fichier projet (monprojet.dproj) pendant la phase d'execution de mon proramme.
merci d'avance de vos réponses.
cordialement,
Dibak
Sujet abordé ici.
Bonjour, je trouve la question ambiguë.
S'agit-il de savoir où se situe le fichier .dproj qui est un fichier ouvert par l'IDE ou du fichier exécutable (comme l'indique la partie de phrase "la phase d'execution") ?
Pour ce qui est du fichier .exe la réponse est déjà indiquée par Andnotor.
Pour ce qui est du fichier dproj, tout d'abord cela ne ce pourrait que sur le poste de dévelloppement
par code il faut donc faire un tripme ExtractFileDir à partir du nom complet de l'exécutable
MAIS en FMX, Application.exename n'existe pas il faut donc revenir au "classique" ParamStr(0)
Code : Sélectionner tout - Visualiser dans une fenêtre à part var dirproj:=ExtractFileDir(ExtractFileDir(ExtractFileDir(application.exename)));au niveau de l'EDI, une option dans la fenêtre projets permet d'afficher le chemin
Code : Sélectionner tout - Visualiser dans une fenêtre à part var dirproj:=ExtractFileDir(ExtractFileDir(ExtractFileDir(paramstr(0))));
![]()
(première option du menu)
NB.une autre option du menu contextuel, toujours dans cette fenêtre, permet de faire une copie en bloc-note de tout ou partie du chemin
MVP Embarcadero
Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
SGBD : Firebird 2.5, 3, SQLite
générateurs États : FastReport, Rave, QuickReport
OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd
Uniquement si tu gardes la configuration de compilation par défaut.
Dans mon cas par exemple les sources sont sur réseau mais les fichiers compilés (exe, dcu, etc.) sont en local en debug (pas besoin de backup).
Et en release, les dcu toujours en local mais les modules (exe, dll, etc.) sur réseau.
Note : tu n'as pas (re)lu mon intervention jusqu'au bout, $(PROJECTDIR) fait très bien le job (même si je ne sais toujours pas à quoi ça peut servir).
MVP Embarcadero
Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
SGBD : Firebird 2.5, 3, SQLite
générateurs États : FastReport, Rave, QuickReport
OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd
Il y a une vieille technique pour connaître le chemin d'un ficher source et par conséquent celle du projet c'est par l'utilisation de Assert
En effet il est possible d'améliorer le code sans déclencher l'assertion qui peut provoquer l’arrêt le programme lancé en mode débogage:
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 function SourcePath(): string; var Msg: string; P1, P2: integer; begin Msg := ''; try {$C+} assert(False,'u');{$C-} except on e: exception do Msg := e.Message; end; P1 := Pos('(', Msg); P2 := Pos(',', Msg); Result := ExtractFilePath(Copy(Msg, P1+1,P2 - P1-2)); end;
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 procedure AsserProc(const Message, Filename: string; LineNumber: Integer; ErrorAddr: Pointer); begin showmessage(Filename); end; procedure TForm1.Button1Click(Sender: TObject); var Old: TAssertErrorProc; begin Old := AssertErrorProc; AssertErrorProc := AsserProc; assert(False,'u'); AssertErrorProc := Old; end;








Salut chers tous,
Merci beaucoup pour toutes vos réponses.
je dois preciser qu'à la phase d'execution et à une étape du processus d'execution de mon programme, je dois copier (faire la copie) de tout mon répertoire (et sous répertoire) contenant mon projet (monprojet.dproj), vers une destination qui me sied car l'objet du projet l'exige.
j'ai donc fait comme a dit Sergio Master <<faire un triple ExtractFileDir >> et ça marche.
je suis sur windows. je me demande si sur mac ça serait toujours valable.
cordialement,
dibak
MVP Embarcadero
Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
SGBD : Firebird 2.5, 3, SQLite
générateurs États : FastReport, Rave, QuickReport
OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd
N'est-ce pas plutôt un boulot pour outil type FinalBuiler ou Jenkins pour automatiser une compilation, une mise en archive dans un zip, un commit + tag sur JEDI VCS* puis un Packaging ?
On n'a un peu l'impression que c'est une sorte de packager votre programme pour archiver les sources, peut-être pour les livrer et les remettre à tiers (le client commanditaire peut-être)
* Oui, tout ça un FB le faisait en JEDI VCS, ça donne l'idée à quel point ça date (D5, D6 et D7)
Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !![]()
Attention Troll Méchant !
"Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
L'ignorance n'excuse pas la médiocrité !
L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
Il faut avoir le courage de se tromper et d'apprendre de ses erreurs
Si c'est pour archiver les sources et les zipper, GExperts fait cela très bien avec plein de possibilités d'ajustement, dans sa fonction Backup.
De plus les sources sont disponibles pour les adapter si besoin.
Partager