Aide pour enregistrer une ListView dans un fichier

GoodStuf Messages postés 1 Date d'inscription jeudi 11 septembre 2003 Statut Membre Dernière intervention 8 avril 2004 - 8 avril 2004 à 04:00
JJack_9999 Messages postés 2 Date d'inscription mardi 29 mai 2007 Statut Membre Dernière intervention 19 février 2008 - 19 févr. 2008 à 09:01
C'est quoi le code pour pouvoir enregistrer dans un fichier Binaire ou autre toute les donné contenue dans une ListView.

Ps, ma listView est incrémenter comme cela:
Var ListItem : TListItem;
begin
With ListItem Do
Begin
ListItem := Carnet.List.Items.Add;
ListItem.Caption := ED_Nom.text + ', ' + ED_Prenom.Text;
ListItem.SubItems.Add(ED_TelMaison.Text);
ListItem.SubItems.Add(ED_Nom.text);
ListItem.SubItems.Add(ED_Prenom.Text);
End;

et sa marche, mais je veut enregistrer tout sa dans un fichier par la suite.

Merci de m'aider!

:)

1 réponse

JJack_9999 Messages postés 2 Date d'inscription mardi 29 mai 2007 Statut Membre Dernière intervention 19 février 2008
19 févr. 2008 à 09:01
voila 2 exemples que j'utilise pour charger une liste dans Word ou Excel, si cela peut aider

procedure TFTools.SaveBackupList_RTF(Title,FName: String;Md:boolean);
Var FTxt : TextFile;
       i,N,L,j : integer;
       Op: Set Of Char;
       Spl:Char;
       FStrsize : String;
       const
  MaxNameL=64;
  MaxSizeL=9;
  {****************************************************}
  function EXFormat:String;
  var i :byte;
  begin
     Result:='';
     for i:= 1 to N do
         Result:=Result+' ';
  end;
  {****************************************************}
begin
   if NOT (ListViewBackup.Items.Count >0) then begin
      ShowMessage('   List empty   ');
      Exit;
   end;
   Op:=['-','+','*','/'];
   Spl:=#9;              //tab = 6 char
   try
     AssignFile(FTxt,FName);
     Rewrite(FTxt);
     MessageBoxTimeOut(' Report files  progress . . .',FName);
     WriteLn(FTxt,Format('[%s] %s',[DateToStr(now),Title]));
     WriteLn(FTxt,'');
     WriteLn(FTxt,Format(' %s [%s]',[MainStatusBar.Panels[3].Text,FilterEdit.text]));
     WriteLn(FTxt,'');
     WriteLn(FTxt,Format('%d%Sfiles in %d directory%S%s%S%.3n MB',[FTFiles,spl,FTDir,spl,'',spl,FTSize/1024]));
     WriteLn(FTxt,'');
       with ListViewBackup do
        for i:= 0 to Items.Count-1 do begin
          if (Items[i].Caption ='<>') then
            WriteLn(FTxt,Format('[Dir]-->%S%s%S%s%S%s%S%s files'
                            ,[spl,Items[i].SubItems[0],spl,'',spl,Items[i].SubItems[2],spl,Items[i].SubItems[4]]))
          else if NOT Md then begin        // files and dir
            FName:=Items[i].SubItems[0];
            for j:= 1 to Length(FName) do if FName[j] in Op then FName[j]:='_';
            L:=Length(FName);
            if L <= MaxNameL then N:=MaxNameL-L;
            if N >0 then FName:=FName+EXFormat+'|';
            FStrsize:=Items[i].SubItems[2];
            L:=Length(FStrsize);
            if L <= MaxSizeL then N:=MaxSizeL-L;
            if N >0 then FStrsize:='|'+EXFormat+FStrsize;
            WriteLn(FTxt,Format('%s%S%s%S%s%S%s',[Items[i].Caption,spl,FName,spl,
                                                             Items[i].SubItems[1],spl,FStrsize]));
           end;
        end;
   finally
     Closefile(FTxt);
   end;
end;
{-----------------------------------------------------------}
procedure TFTools.SaveBackupList_CSV(Title,FName: String;Md:boolean);
Var FTxt : TextFile;
    LCID,  i,j: Integer;
    Fst:TFormatSettings;
    Op: Set Of Char;
    Spl:Char;
begin
   if NOT (ListViewBackup.Items.Count >0) then begin
      ShowMessage('   List empty   ');
      Exit;
   end;
   Op:=['-','+','*','/'];                                 // substitution du first char pour excel
   GetLocaleFormatSettings(LCID,Fst);                     // separator list
   Spl:=Fst.ListSeparator;
   try
     AssignFile(FTxt,FName);
     Rewrite(FTxt);
     MessageBoxTimeOut(' Report files  progress . . .',FName);
     WriteLn(FTxt,Format('[%s] %s',[DateToStr(now),Title]));
     WriteLn(FTxt,Format('%d%S files in %d directory %S%s%S%.3n MB',[FTFiles,spl,FTDir,spl,'',spl,FTSize/1024]));
       with ListViewBackup do
        for i:= 0 to Items.Count-1 do begin
          if (Items[i].Caption ='<>') then    // Dir
            WriteLn(FTxt,Format('[Dir]%S%s%S%s%S%s',[spl,Items[i].SubItems[0],spl,'',spl,Items[i].SubItems[2]]))
          else if NOT Md then begin           // Files
            FName:=Items[i].SubItems[0];
            for j:= 1 to Length(FName) do if FName[j] in Op then FName[j]:='_';
            WriteLn(FTxt,Format('%s%S%s%S%s%S%s',[Items[i].Caption,spl,FName,spl,
                                                             Items[i].SubItems[1],spl,Items[i].SubItems[2]]));
          end;
        end;
   finally
     Closefile(FTxt);
   end;
end;
{-------------------------------------------------------------------------}
Cordialement
JJo
0
Rejoignez-nous