bonjour,
jutilise la procedure datasetToTextFile, cette dernière ma permit de créé le document texte dans le répertoire de l'application, mais ce que je souhaite c'est de donnée la main à l'utilisateur pour choisir le chemin via un RZshelltree.
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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
 
 //crée un fichier texte
procedure datasetToTextFile(ds : TDataSet; nomFichier : string;
                                        separateur : string = ';'; delimiteur : char = #0);
var 
  i : integer;
  fichier : TextFile; 
  bm : TBookmark;
  sCursor : TCursor;
  valeur : string;
  openDS : boolean;
  begin
  try
    { Création du fichier de sortie }
 
    AssignFile(fichier,nomFichier);
    Rewrite(fichier);
    write(fichier,inttostr(ds.recordcount)+separateur)
  except
    on e: exception do
      raise Exception.Create('Erreur pendant la création du fichier [' + nomfichier + '] : ' +
                             sLineBreak + e.message);
  end;
 
  sCursor := Screen.Cursor;
  Screen.Cursor := crHourGlass;
  try
    ds.DisableControls;
    openDS := not ds.Active;
    bm := nil;
    try
      with ds do
      begin
        if openDS then
          Open
        else
        begin
          { on sauvegarde la position de l'enregistrement courant dans }
          { le dataset afin de la restituer en fin de traitement }
          bm := ds.GetBookmark;
          First;
        end;
        { ligne d'en-tête : on met le nom des zones }
        for i:= 0 to FieldCount - 1 do
        begin
          if (i > 0) then
            write(fichier,separateur + ds.Fields[i].FieldName)
          else
            write(fichier,ds.Fields[i].FieldName);
        end;
        writeln(fichier);  { passe à la ligne suivante dans le fichier }
        while not Eof do
        begin
          { écriture de chaque colonne de l'enregistrement courant }
          for i := 0 to FieldCount - 1 do
          begin
            { ajout du délimiteur si le champ est de type texte }
            if (delimiteur <> #0) and
              (Fields[i].DataType in [ftString, ftMemo, ftFmtMemo, ftFixedChar, ftWideString]) then
              valeur := AnsiQuotedStr(Fields[i].FieldName+Fields[i].Text,delimiteur)
            else
              valeur := Fields[i].FieldName+Fields[i].Text;
            { à partir du second champ, on ajoute le séparateur }
            if (i > 0) then
              write(fichier,separateur + valeur)
            else
              write(fichier,valeur)
          end;
          writeln(fichier); { passe à la ligne suivante dans le fichier }
          Next;
        end; { while not eof }
      end; { with ds }
    finally
      { si on a ouvert le ds, on le ferme }
      if openDS then
        ds.Close
      else
      { sinon, on se repositionne sur l'enregistrement initial }
      begin
        ds.GotoBookmark(bm);
        ds.FreeBookmark(bm);
      end;
      ds.EnableControls;
 
      CloseFile(fichier);
 
       end;
  finally
    Screen.Cursor := sCursor;
  end;
end;
//procédure d'appel
procedure TForm1.Button9Click(Sender: TObject);
var y,m,j:word;
var Present:TDateTime;
begin
Present:=Now;
edit2.Text :='';
  DecodeDate(present,y,m,j);
  edit2.Text :=rzshelltree1.SelectedPathName;
  edit2.Text:= edit2.Text+'\'+'bdd'+label16.Caption +'T'+combobox3.Text+ inttostr(y-2000) +'.txt';
  datasetToTextFile(form1.ADOqag,'bdd'+label16.Caption +'T'+combobox3.Text+ inttostr(y-2000) +'.txt',';',' ');
  showmessage('Transférer à la DRC ' +edit2.Text);
end;
edit2.text contient le chemin choisi par l'utilisateur.
je souhaite sauvegarder le document texte créer là où l'utilisateur a choisi.
Merci.