"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.
f0xi
Messages postés4205Date d'inscriptionsamedi 16 octobre 2004StatutModérateurDernière intervention12 mars 202237 7 févr. 2008 à 04:27
"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;
cincap
Messages postés460Date d'inscriptiondimanche 5 décembre 2004StatutMembreDernière intervention 6 avril 20092 6 févr. 2008 à 17:00
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.
cincap
Messages postés460Date d'inscriptiondimanche 5 décembre 2004StatutMembreDernière intervention 6 avril 20092 7 févr. 2008 à 07:04
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: mailto:]
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_Loda
Messages postés814Date d'inscriptionvendredi 3 novembre 2000StatutMembreDernière intervention30 juillet 20093 7 févr. 2008 à 14:05
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
<hr size="2" width="100%" />Se poser les bonnes questions est le premier pas pour trouver les bonnes réponses.
cincap
Messages postés460Date d'inscriptiondimanche 5 décembre 2004StatutMembreDernière intervention 6 avril 20092 26 févr. 2008 à 20:06
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);