Dossier racine

Résolu
flo160fr Messages postés 157 Date d'inscription dimanche 19 novembre 2000 Statut Membre Dernière intervention 14 avril 2009 - 6 juin 2006 à 14:02
Cirec Messages postés 3833 Date d'inscription vendredi 23 juillet 2004 Statut Modérateur Dernière intervention 18 septembre 2022 - 7 juin 2006 à 12:52
Bonjour,

Je voudrai savoir comment faire pour aler au dossier racine du dossier actuel...
Je m'explique avec un exemple :
J'ai ce chemin : 'c:\windows\system32\'
et je voudrai obtenir : 'c:\windows\' quand je clique sur un bouton
et que quand je reclique dessu j'ai 'c:\'...

Merci d'avance !

5 réponses

cs_fjohnny Messages postés 46 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 18 septembre 2006
6 juin 2006 à 14:14
Voilà une petite fonction que j'ai fait et qui peut peut-etre résoudre ton problème.

function DossierParent(Path : String): String;
Var i: Integer;
begin
For i:=length(Path)-1 downto 1 do
if Path[i]='\' then Break;
Result:=Copy(Path,1,i);
end;
3
flo160fr Messages postés 157 Date d'inscription dimanche 19 novembre 2000 Statut Membre Dernière intervention 14 avril 2009
6 juin 2006 à 14:19
Merci beaucoup !
0
Cirec Messages postés 3833 Date d'inscription vendredi 23 juillet 2004 Statut Modérateur Dernière intervention 18 septembre 2022 50
7 juin 2006 à 00:03
Salut,
Il y a beaucoup plus simple pour aller au dossier parent :

ChDir( '..' );  // pour Change Directory et  '..'  pour remonter au dossier parent

Exemple d'utilisation ( deux label et un bouton) et :

Procedure TForm1.Button6Click(Sender: TObject);
Var S : String;
begin
 GetDir(0, S); // On récupère le répertoire actuel
 Label1.Caption := S; // On l'affiche
 ChDir('..'); // On remonte au dossier parent
 GetDir(0, S); // On récupère son nom
 Label2.Caption := S; // et on l'affiche
end;

y a pas plus simple que ça

@+
Cirec
0
flo160fr Messages postés 157 Date d'inscription dimanche 19 novembre 2000 Statut Membre Dernière intervention 14 avril 2009
7 juin 2006 à 10:29
le seul probleme avec ton code Cirec, c'est que ChDir('..'); renvoi le dossier parent de l'executable... ce qui pose problème dans le cas d'un explorateur de fichier, car on ne part pas forcément du dossier racine de l'application (mais merci quand meme)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Cirec Messages postés 3833 Date d'inscription vendredi 23 juillet 2004 Statut Modérateur Dernière intervention 18 septembre 2022 50
7 juin 2006 à 12:52
Alors pour ton information :
ChDir ne renvoie pas au dossier parent de l'exécutable

Mais il renvoie au du dossier courant

Tu parles bien dans ta question de "comment faire pouraler au dossier racinedu dossier actuel..."

dans ce cas on suppose que le dossier courant est le dossier de départ.

Mais dans l'exemple que je te donne il est normal de partir du répertoire de l'application, puisque aucun changement de répertoire n'a été fait avant.

Mais si tu effectues un changement de répertoire avant d'appeler l'exemple tu verras qu'il part du dernier répertoire selectionné.

Où tu peux le faire directement avec ChDir( 'Dossier de Départ' ) puis ChDir( '..' );

De même si tu te places dans C\Windows\System32
et que de la tu tappes C:\mon_Prog\Mon_Prog.exe
ChDir aura comme répertoire de départ C\Windows\System32  mais en aucun cas
C:\mon_Prog

Il faut consulter l'aide de Delphi de temps en temps

Mais si c'est pour un Explorer  tu en as pas besoin.
L'utilisation d'un TTreeNodes me semble plus approprié

@+
Cirec
0
Rejoignez-nous