Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Directory [ Divers / Débutant(e) ] (cincap)

mercredi 6 février 2008 à 16:35:56 | Directory

cincap

Bonjour à toutes et à tous,

Voici mon problème, j'ai un logiciel qui lors de l'installation vérifie si un dossier contenu dans son répertoire existe.

Si pas il le crée.

Code sans les guillemets :

"chemappli := ExtractFilePath(Application.ExeName);"

"if not DirectoryExists('Plans') then mkdir('Plans');"

Tout fonctionne sur Win XP mais sur Vista, le dossier est bien créé dans le répertoire de l'application mais si je sauve un plan, Vista recrée le dossier sur la racine.

Y a t'il une explication que je n'aurai pas saisi.

Merci d'avance si quelqu'un a une idée du problème.

@+,

Cincap

mailto:

mercredi 6 février 2008 à 16:52:46 | Re : Directory

BernieNoel68

Réponse acceptée !
Je ne sais pas si j'ai bien compris, mais peut etre avec ça:

if not DirectoryExists(cheminappli + 'Plans') then mkdir(cheminappli + 'Plans');



mercredi 6 février 2008 à 17:00:14 | Re : Directory

cincap

Bonjour,

Je n'ai pas besoin de reprendre le chemin "chemappli" puisqu'il est en variable, je pense que c'est plutôt un problème de Vista puisque cela fonctionne correctement sur Win Xp pack1et 2.

Merci de ta réponse.

@+,

Cincap

mailto:

jeudi 7 février 2008 à 04:27:08 | Re : Directory

f0xi

Membre Club Administrateur CodeS-SourceS
Réponse acceptée !


"Je n'ai pas besoin de reprendre le chemin "chemappli" puisqu'il est en variable"

et alors ?
tu crois que ça suffit ? que delphi "devine" ce que tu compte faire de cette variable ?


"pense que c'est plutôt un problème de Vista puisque cela fonctionne correctement sur Win Xp pack1et 2"

ben tiens ... c'est bien beau d'incriminer Windows ... mais quand on se trompe dans une programme on peu toujours dire que c'est "a cause du systeme" ...



{ SafeCreateDir
  Crée un repertoire grace a l'api windows si ce repertoire n'existe pas.

  parametres :
    DirName [i] string, chemin complet du repertoire a créer exemple:
                C:\Program Files\MonProgramme\Ressources
                "Ressources" etant le repertoire a créée.

  retour :
    boolean, true si le repertoire existe ou a pus etre créé sinon false.
   
    SafeCreateDir affiche une boite d'erreur indiquant le numero d'erreur
    et le message systeme correspondant.
}
function SafeCreateDir(const DirName: string): boolean;
var MsgErr : string;
    ErrCode : cardinal;
begin
  result := DirectoryExists(DirName); // verifie la presence de DirName
  if not result then // non ?
  begin
     result := CreateDirectory(PChar(DirName), nil); // on crée DirName
     if not result then // erreur ?
     begin
       ErrCode := GetLastError; // recupere le code erreur
       MsgErr  := 'Erreur [' + IntToStr(ErrCode) + '] creation du dossier :' + #13#10 +
                  '(' + DirName + ')' + #13#10#13#10 + SysErrorMessage(ErrCode);
       MessageDlg(MsgErr, mtWarning, [mbOk], 0); // affiche l'erreur
     end;
  end;
end;

procedure TForm1.FormCreate(Sender: TObject);
var DirName : string;
begin
  DirName := ExtractFilePath(ParamStr(0))+'\Plans'; // notre dossier
  SafeCreateDir(DirName); // test x:\repertoire\monprogramme\plans
  SafeCreateDir('//:kapoué*'); // test un dossier erroné
end;



deefsign.gif

jeudi 7 février 2008 à 07:04:31 | Re : Directory

cincap

Bonjour à toutes et à tous,

@ Foxi, merci de ta longue explication comme toujours appréciée, tu as raison mais j'attendais de faire l'essai ce jour sur le Pc du voisin qui tourne sur Vista.

En effet, j'avais appliqué l'explication du membre BernieNoel68 que je remercie encore.

D'autant que dans le reste du programme , j'avais codé le chemin comme proposé par ce membre pour un autre dossier.

Méa Culpa.

@+,

Cincap

mailto:


jeudi 7 février 2008 à 14:05:17 | Re : Directory

Loda

Membre Club
salut,

j'ai eut un problème avec Vista (beta):

je charge un fichier de config qui est dans un sous-dossier de l'applic: pas de problem.
je modifie le fichier et je le sauve: pas de problème.
le fichier sur le disque n'est pas modifié.

après quelques recherches et test: il semble que vista te fasse croire que tas acces au fichier dans le dossier programm file, mais il fait les modif dans un cache qui n'est jamais écrit sur le disque.

D'après MS, il exist deux solutions:
- sauver tes données d'application dans ApplicationData.
- obetnir les droits d'écriture dans programmFile (j'ai même pas essayé)

A+

Loda

Se poser les bonnes questions est le premier pas pour trouver les bonnes réponses.

jeudi 7 février 2008 à 17:02:41 | Re : Directory

cincap

Salut Loda,

Tu rejoins ma première impression sur Vista (droits ect...), néanmoins je dois encore faire le test chez mon voisin.

Dans Vista, le répertoire "Program Files" n'existe pas, il est remplacé par "Program".

Je pense que la solution des membres BernieNoel68 et Foxi doit fonctionner telle quelle.

Sinon merci aussi pour ta réponse.

@+,

Cincap

mailto:

mardi 26 février 2008 à 20:06:49 | Re : Directory

cincap

Bonsoir à toutes et à tous,

J'ai donc essayé le code de BernieNoel68 sur le pc du voisin équipé de Vista et cela ne fonctionne pas.

J'ai donc utilisé le code de l'ami Foxi mais je n'ai pas encore eu l'occasion de le tester sur le pc avec Vista, sur le mien cela fonctionne comme celui de BernieNoel.

En supposant que dans le dossier créé, je dois sauver une image, plutôt que de faire ceci (en rouge) :

Function TCameras.SaveJpeg1(Camera:integer):string;
var Jpg1 : TjpegImage;
    FileName:string;
chappli : String;
begin
  Result:='';
    while  Image1.Tag<>0 do Application.ProcessMessages;
    Image1.Tag:=1;
  afficheheure1(camera,20);

  Jpg1 := TjpegImage.Create;
  Jpg1.Assign(image1.Picture.Bitmap);
  Jpg1.CompressionQuality := 80;
  inc(Parcam[Camera].IndexImage);
  FileName:= chappli + 'Detection\' +'CAM'+inttostr(Camera)+'  '+'IMG'
  + inttostr(Parcam[Camera].IndexImage)+ '.jpg';
  Jpg1.SaveToFile(FileName);  
  Jpg1.Free;
    Image1.Tag:=0;
  Result:=Filename;
end;

Je pourrai peut être faire ceci :

 FileName:= ExtractFilePath(ParamStr(0))+ '\Detection'+ 'CAM' + inttostr(Camera)+ '  ' + 'IMG' + inttostr(Parcam[Camera].IndexImage) + '.jpg';

Qu'en penser vous ?

@+ Cincap


mailto:




Cette discussion est classé dans : problème, répertoire, application, dossier, directory


Répondre à ce message

Sujets en rapport avec ce message

Problème ODBC et procédure stockée [ par xklibur ] hello world,ben voila mon problème. Je fait une application qui utilise des procédure stockée sur un serveur microsoft sql server 7.Dans mon applicati Problème DDE [ par ccb9902 ] J'ai une form en Delphi 4 avec un DDEClientConv me permettant de faire un liaison DDE et de lancer des macros vers une application VB3 (que je ne peux Problème de modification de répertoire [ par chups82 ] Bonjour,Dans mon application je crée un répertoire dans lequel l'utilisateur enregistre des fichiers html et des repertoires contenant les images. L'u Problème d'icone de l'application [ par Adelain ] J'ai un ptit problème qd j'essaie de modifier l'icone de mon appli Delphi 5: je recois le mesag d'erreur "Image îcone incorrecte". Pourtant l'icone qu Problème fichier INI [ par TiDaN326 ] Bonjour à tous :)Bon je me sert de la fonction pour créer/lire des fichiers INI... jusque là, tout va bien, mais comment je fait pour créer le fichier PROGRAMME A MODULE [ par LeGuepard ] Bonjour,J'ai imaginé un logiciel à modules interchangeables qui fonctionnerait comme suite :Un module A qui est en fait un Form avec différents compos vider un répertoire et supression de sous répertoire [ par Adidas2 ] Bonjour,J'aimerai savoir comment faire pour avoir une fonction qui vide un répertoire mais qui supprime également les sous répertoires. J'ai essayé av Problème avec ClientSocket et ServerSocket [ par Peaches ] Bonjour, j'ai un problème avec mes deux application (l'une client et l'autre serveur) a savoir que quand le serveur est lancé sur mon ordinateur le cl Barrer (locker) un répertoire, dossier [ par Lustmord ] Il est possible de barrer des fichiers avec des fonctions tels que LOCKFILE()Mais jme pose la question à propos des dossiers?!S'il ya une possibilité, fermer une form [ par Adidas2 ] Salut à tous,J'explique mon problème :Je lance une application grâce à mon propre programme seulement l'application fraichement lancée ouvre une fenêt


Nos sponsors

Sondage...

CalendriCode

Octobre 2008
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,187 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.