IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Free Pascal Discussion :

[Free Pascal] Créer dossier


Sujet :

Free Pascal

  1. #1
    Membre à l'essai
    Inscrit en
    Décembre 2006
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 15
    Points : 15
    Points
    15
    Par défaut [Free Pascal] Créer dossier
    Rebonjour à tous,
    mon problème est le suivant :
    à l'aide de la commande OPEN(f);
    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
    16
    17
    18
    19
    20
    function OPEN(var f : file):boolean;
    {Description : OPEN ouvre un fichier}
    Const CHEMIN='Dico.dcm';
    var tmp:integer;
     
    Begin
    	Assign(f,CHEMIN);
    	FileMode:=2;
    	{$I-}reset(f,1);{$I+}
    	tmp:=IOResult;
    	if (tmp<>0) then begin
    		writeln('Probleme lors de l"ouverture du fichier');
    		if (tmp=2) then	begin
    			writeln('Fichier introuvable! creation du fichier ',CHEMIN);
    			rewrite(f,1);
    			{ajout gestion d'erreurs de rewrite, le repertoire n"existe pas..}
    		end;
    	end;
    	OPEN:=TRUE;
    end{/OPEN};
    j'aimerais pouvoir créer des dossiers qui n'existeraient pas dans 'CHEMIN'
    ex: CHEMIN='\file\dico.dcm';
    ici 'file' n'existe pas

    Merci

  2. #2
    Responsable Pascal, Lazarus et Assembleur


    Avatar de Alcatîz
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mars 2003
    Messages
    7 968
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2003
    Messages : 7 968
    Points : 59 654
    Points
    59 654
    Billets dans le blog
    2
    Par défaut
    Bonjour !

    La procédure mkdir (const s : String) permet de créer un dossier.

  3. #3
    Membre à l'essai
    Inscrit en
    Décembre 2006
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 15
    Points : 15
    Points
    15
    Par défaut
    merci à toi
    est-ce que tu sais s'il existe une façon de créer récursivement les dossiers?

    ou il me faut analyser le chemin passé en paramètre?

  4. #4
    Membre à l'essai
    Inscrit en
    Décembre 2006
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 15
    Points : 15
    Points
    15
    Par défaut
    rebonjour,

    je suis confronté à un autre problème :
    j'ai réussi à créer les dossiers qui n'existeraient pas dans mon appel de fonction OPEN. Le problème c'est que le programme me plante si je tente de créer un dossier déjà existant.

    exemple :
    je créé les dossiers temp/file/test
    je rappelle la fonction pour créer le dossier temp/toto
    et forcément il me plante car temp existe déjà

    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    function fileDir(var f:file;Const cible : String):boolean;
    var cibleInd,j,k,tmp:integer;
    	folder : string;
    begin
    	cibleInd:=1;
    	if (cible[cibleInd]='/') then begin 
    		writeln('Error : incorrect Path name');
    		fileDir:=FALSE;
    	end
    	else begin
    		folder:='';
    		Assign(f,cible);
    		FileMode:=2;
    		while (cibleInd<length(cible)) do begin
    			j:=cibleInd;
    			k:=0;
    			while (cible[j]<>'/') and (j<=length(cible)) do begin
    				j:=j+1;
    				k:=k+1;
    			end{/while};
    			folder:=folder+copy(cible,cibleInd,k);
    			writeln(folder);
    			if (cible[j]='/') then begin
    			{a rajouter : exception d"erreur au cas ou le dossier existe deja}
    				{$I-}mkdir(folder){$I+};
    				//if tmp<>0 then begin
    				folder:=folder+'/';
    			end
    			else rewrite(f,1);
    			cibleInd:=j+1;
    		end{/while};
    		fileDir:=TRUE;
     
    	end;
     
    end;
     
     
    end.
    en fait ce programme me permet de créer un fichier au final dans des répertoires qui n'existeraient pas

  5. #5
    Responsable Pascal, Lazarus et Assembleur


    Avatar de Alcatîz
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mars 2003
    Messages
    7 968
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2003
    Messages : 7 968
    Points : 59 654
    Points
    59 654
    Billets dans le blog
    2
    Par défaut
    Tu peux également récupérer le résultat de la tentative de création du dossier avec IOResult, ça devrait éviter une erreur d'exécution.

    Question plus générale : travailles-tu avec des noms de chemins absolus ou relatifs ? Avec des chemins relatifs, si tu te trouves dans le dossier temp\file, tu ne pourras créer temp\toto qu'en l'appelant ..\toto (me semble-t-il).

  6. #6
    Membre habitué
    Inscrit en
    Mars 2004
    Messages
    126
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 126
    Points : 151
    Points
    151
    Par défaut
    Salut
    Cette fonction fait exactement ce que vous essayez de faire. Elle est décalrée dans SysUtils
    A+

  7. #7
    Membre à l'essai
    Inscrit en
    Décembre 2006
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 15
    Points : 15
    Points
    15
    Par défaut
    grand merci à vous
    forcedirectories me facilite la tâche ^^
    et je créée les dossiers en relatif

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Free Pascal] Créer un bouton
    Par diden138 dans le forum Free Pascal
    Réponses: 74
    Dernier message: 11/05/2006, 13h04
  2. [Free Pascal] Graphique avec Dev-Pascal
    Par CompuTux dans le forum Free Pascal
    Réponses: 15
    Dernier message: 03/09/2004, 03h15
  3. [Free Pascal] Application client/serveur en Pascal
    Par zouzou_zaza dans le forum Free Pascal
    Réponses: 15
    Dernier message: 02/09/2004, 18h57
  4. [Free Pascal] Taille de l'exécutable
    Par macluvitch dans le forum Free Pascal
    Réponses: 12
    Dernier message: 28/11/2003, 22h26
  5. [Free Pascal] Comportement de Exec
    Par néo333 dans le forum Free Pascal
    Réponses: 3
    Dernier message: 01/11/2003, 18h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo