cs_francky57
Messages postés2Date d'inscriptionlundi 2 février 2004StatutMembreDernière intervention24 septembre 2009
-
24 sept. 2009 à 13:09
Cirec
Messages postés3833Date d'inscriptionvendredi 23 juillet 2004StatutModérateurDernière intervention18 septembre 2022
-
24 sept. 2009 à 15:39
Bonjour,
La méthode TStrings.SaveToFile ne permet pas d'enregistrer un fichier dans un répertoire inexistant.
j'aurais voulu surcharger cet appel pour pouvoir créer les répertoires de destination lorsque celui ci n'existe pas.
Mais je ne sais pas comment m'y prendre ??
Merci de votre aide.
francky57
Bacterius
Messages postés3792Date d'inscriptionsamedi 22 décembre 2007StatutMembreDernière intervention 3 juin 201610 24 sept. 2009 à 14:20
Hmm ... pour surcharger :
type
TStringsSurcharge = class(TStrings)
...
public
procedure SaveToFile(AFileName: TFileName); override;
end;
Pour le répertoire inexistant, il me semble que CreateDir gère la récursivité (je pense qu'en lui passant un répertoire existant ou pas, il va le créer (et créer les eventuels dossiers intermédiaires). Sinon, procédure récursive ...
Cirec
Messages postés3833Date d'inscriptionvendredi 23 juillet 2004StatutModérateurDernière intervention18 septembre 202250 24 sept. 2009 à 14:36
non non
[hr]procedure TForm1.Button2Click(Sender: TObject);
var FilePath: string;
[b]begin
/bFilePath := ExtractFilePath(Application.ExeName);
if ForceDirectories(FilePath+'toto\titi\tata') [b]then
/bMemo1.Lines.SaveToFile(FilePath+'toto\titi\tata\test.txt');
end;
[hr]
f0xi
Messages postés4205Date d'inscriptionsamedi 16 octobre 2004StatutModérateurDernière intervention12 mars 202235 24 sept. 2009 à 14:56
oui forcedirectories... j'ai confondus
procedure TStringList.SaveToFile(const FileName: String);
var path : string;
begin
path := ExtractFilePath(FileName);
if not directoryExists(Path) then
ForceDirectories(Path);
inherited SaveToFile(FileName);
end;
Vous n’avez pas trouvé la réponse que vous recherchez ?
Cirec
Messages postés3833Date d'inscriptionvendredi 23 juillet 2004StatutModérateurDernière intervention18 septembre 202250 24 sept. 2009 à 15:39
si il n'y a pas de chemin (chaine vide) ForceDirectories plante
[quote=l'Aide Delphi]Important : N'appelez pas ForceDirectories avec une chaîne vide.Ceci provoque le déclenchement d'une exception par ForceDirectories.
ensuite il n'est pas utile de tester l'existence du répertoire ... ForceDirectories le fait et renvoi True si le répertoire existe où si il a été crée
[quote=l'Aide Delphi]ForceDirectories crée le répertoire spécifié dans Dir,qui doit être un chemin d'accès complet.Si les répertoires indiqués dans le chemin n'existent pas encore,ForceDirectories tente de les créer.
/quote
que se passe t'il si on lui passe un chemin relatif ? par Ex. SaveToFile('..\toto\Fichier.txt')
ben ça plante aussi