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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Décembre 2006
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 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
    8 052
    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 : 8 052
    Billets dans le blog
    2
    Par défaut
    Bonjour !

    La procédure mkdir (const s : String) permet de créer un dossier.
    Règles du forum
    Cours et tutoriels Pascal, Delphi, Lazarus et Assembleur
    Avant de poser une question, consultez les FAQ Pascal, Delphi, Lazarus et Assembleur
    Mes tutoriels et sources Pascal

    Le problème en ce bas monde est que les imbéciles sont sûrs d'eux et fiers comme des coqs de basse cour, alors que les gens intelligents sont emplis de doute. [Bertrand Russell]
    La tolérance atteindra un tel niveau que les personnes intelligentes seront interdites de toute réflexion afin de ne pas offenser les imbéciles. [Fiodor Mikhaïlovitch Dostoïevski]

  3. #3
    Membre averti
    Inscrit en
    Décembre 2006
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 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 averti
    Inscrit en
    Décembre 2006
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 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
    8 052
    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 : 8 052
    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).
    Règles du forum
    Cours et tutoriels Pascal, Delphi, Lazarus et Assembleur
    Avant de poser une question, consultez les FAQ Pascal, Delphi, Lazarus et Assembleur
    Mes tutoriels et sources Pascal

    Le problème en ce bas monde est que les imbéciles sont sûrs d'eux et fiers comme des coqs de basse cour, alors que les gens intelligents sont emplis de doute. [Bertrand Russell]
    La tolérance atteindra un tel niveau que les personnes intelligentes seront interdites de toute réflexion afin de ne pas offenser les imbéciles. [Fiodor Mikhaïlovitch Dostoïevski]

  6. #6
    Membre éprouvé
    Inscrit en
    Mars 2004
    Messages
    126
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 126
    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 averti
    Inscrit en
    Décembre 2006
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 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, 12h04
  2. [Free Pascal] Graphique avec Dev-Pascal
    Par CompuTux dans le forum Free Pascal
    Réponses: 15
    Dernier message: 03/09/2004, 02h15
  3. [Free Pascal] Application client/serveur en Pascal
    Par zouzou_zaza dans le forum Free Pascal
    Réponses: 15
    Dernier message: 02/09/2004, 17h57
  4. [Free Pascal] Taille de l'exécutable
    Par macluvitch dans le forum Free Pascal
    Réponses: 12
    Dernier message: 28/11/2003, 21h26
  5. [Free Pascal] Comportement de Exec
    Par néo333 dans le forum Free Pascal
    Réponses: 3
    Dernier message: 01/11/2003, 17h46

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