Synchronisation de fichiers

Soyez le premier à donner votre avis sur cette source.

Vue 11 641 fois - Téléchargée 1 341 fois

Description

Bonjour,

Le programme de synchronisation de répertoires posté par akilavaca m'a donné des idées et j'en ai fait le programme présenté ici. Deux petites particularités à signaler: le programme, par configuration, peut tenir compte de la différence des dates des fichiers entre les systèmes FAT et NTFS (2 secondes) ou tester les dates en jouant sur les fuseaux horaires.

Comme vous pouvez le deviner sur la capture jointe, la synchronisation est bidirectionnelle. Il est possible de faire un certain nombre d'opérations comme la synchronisation bien sûr, la suppression de fichiers (dans la source et/ou la destination), la suppression des répertoires vides. Une description détaillée est jointe dans un fichier au format pdf.

J'utilise ce programme pour mes fréquentes synchronisations (même après réorganisation des arborescences (d'où la présence de la suppression des répertoires vides)). Sur un des ordinateur que j'utilise, il y a le petit défaut suivant: au démarrage du thread à la demande de recherche des fichiers, il y a invalidation des boutons de la barre d'outils. Il arrive qu'un ou deux boutons soient invalidés, pas les autres, et plus rien ne se passe. Il faut cliquer sur un bouton encore actif et cliquer à nouveau sur le bouton de recherche des fichiers pour le travail s'effectue. Si quelqu'un trouve le problème, je l'en remercie d'avance.

Tous les textes sont chargés depuis des fichiers textes avec l'extension .lng avec un format des fichiers .ini. Ceci provient du fait que certains de mes programmes sont multilingues et le fichier texte est plus facilement transmit à une personne tierce pour traduction. Il y a un fichier de texte pour les fichiers propre à l'application et un pour les librairies. Ce n'est pas la manière la plus concise pour gérer mais c'est celle que j'ai choisie.
Les fichiers suivants sont indépendants de l'application et peuvent donc être réutilisés: Colors, DatesFunc, Filesutils, FormAbout, FormSelectDir, Language_Lib, StringUtils.

Il y a encore beaucoup de fonctions qui peuvent être ajoutées et il n'est pas impossible que j'en fasse. Si quelqu'un améliore ce programme ou ajoute des fonctions, je serais ravi de les rassembler avec mes ajouts éventuels pour en faire un nouveau post.

Depuis une année je ne programme plus que dans le train, lors de mes déplacements journaliers pour me rendre à mon travail. Cela implique une réactivité réduite de ma part sur le forum. Merci de votre patience si vous m'interpelez après ce post.

Cordialement

Tigris

Conclusion :


Il y a encore beaucoup de fonctions qui peuvent être ajoutées et il n'est pas impossible que j'en fasse. Si quelqu'un améliore ce programme ou ajoute des fonctions, je serais ravi de les rassembler avec mes ajouts éventuels pour en faire un nouveau "post".

Depuis une année je ne programme plus que dans le train, lors de mes déplacements journaliers pour me rendre à mon travail. Cela implique une réactivité réduite de ma part sur le forum. Merci de votre patience si vous m'interpelez après ce "post".

Codes Sources

A voir également

Ajouter un commentaire Commentaires
Messages postés
57
Date d'inscription
dimanche 27 mars 2005
Statut
Membre
Dernière intervention
15 janvier 2009

Salut Philippe,

Cela fait très plaisir de voir que ce code intéresse quelques personnes et surtout que ces personnes creusent les choses et proposent des améliorations qui sont les bien-venues.

Merci donc pour tes améliorations.

Cordialement

Tigris
Messages postés
2
Date d'inscription
jeudi 1 janvier 2004
Statut
Membre
Dernière intervention
29 octobre 2008

salut,
quelques petites erreur notament si tu ne synchronise qu'une direction dest -> src

je me suis permit de modifier quelque peu le source
dans la methode SynchroFiles de l'unite FormSyncFiles

...
bIgnored := FALSE;
// Gestion de la synchronisation
if CheckBoxSyncFromSource.Checked then
begin
if sFields[nCOL_CHECKED] = '1' Then
begin
if sFields[nCOL_SYNC] = '>' then
CopySrcToDest
else
bIgnored := True;
// else
//if sFields[nCOL_SYNC] = '<' then
// CopyDestToSrc;
end
else
bIgnored := True;
end;

if CheckBoxSyncFromTarget.Checked then
begin
if sFields[nCOL_CHECKED] = '1' Then
begin
// if sFields[nCOL_SYNC] = '>' then
// CopySrcToDest
// else
if sFields[nCOL_SYNC] = '<' then
CopyDestToSrc
else
bIgnored := True;

end
else
bIgnored := True;
end;

// Gestion de la bonne exécution ou non de la copie
if (not(bCopied)) and (not(bIgnored)) then
begin
...

autre modif
dans la formprincipale

possibilite de saisir les filtre directement dans le combo

ajou de la methode onKeyup

procedure TFrmMain.ComboBoxFileTypesKeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
var
id : Integer;
begin
if Key = VK_RETURN then
begin
if ComboBoxFileTypes.Items.IndexOf(trim(ComboBoxFileTypes.Text))< 0 Then
begin
ComboBoxFileTypes.Items.Add(trim(ComboBoxFileTypes.Text));
id := ComboBoxFileTypes.Items.IndexOf(trim(ComboBoxFileTypes.Text));
ComboBoxFileTypes.ItemIndex := id;
OnUserSelectActions(sender);
end;
end;
end;

Cordialement
Philippe
Messages postés
57
Date d'inscription
dimanche 27 mars 2005
Statut
Membre
Dernière intervention
15 janvier 2009

Merci Atlandev,

J'ai effectivement vu le problème, mais après le "post". J'avais bien testé cela, mais je pense qu'une modification ultérieure, pas ou mal testée, est à l'origine de cette défaillance. Je vais y remédier et faire une mise à jour, après les fêtes.

Bonnes Fêtes de Pâques.

Tigris
Messages postés
3
Date d'inscription
jeudi 12 août 2004
Statut
Membre
Dernière intervention
20 mars 2008

un seul mot BRAVO...
Programme + Fichier d'aide... et en plus le progr. fonctionne parfaitement.
Juste un p'tit truc, la suppression d'un lien dans la boîte de dialogue options->historiques ne semble pas bien fonctionner.
Bonne continuation.
Messages postés
57
Date d'inscription
dimanche 27 mars 2005
Statut
Membre
Dernière intervention
15 janvier 2009

Un oubli:
Les illustrations du fichier d'aide (.pdf) sont celles de l'application qui utilise le composant VclSkin. Le programme original comporte un bouton supplémentaire pour choisir l'apparence en chargeant un fichier correspondant au choix. C'est le 2ème bouton de puis la droite sur la capture et qui ne se trouve pas dans le source déposé. Le composant est payant et c'est pourquoi il n'est pas joint au "post".

Cordialement
Tigris

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.