Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - Synchronisieren 2er ordner
ck3009 - Mi 24.09.03 11:07
Titel: Synchronisieren 2er ordner
Hallo developers,
ich möchte ein Programm schreiben, dass mir es ermöglicht 2 ordner zu synchronisieren. Der eine Ordner soll z.B. sich auf einem Lap-Top befinden und der andere auf einem Server. habt ihr da vielleicht ne lösung.
???
mb - Mi 24.09.03 11:27
Da gibt es im OpenSource-Sektor schon einiges... Ein Blick zu rsync von Unix/Linux könnte da sehr viele Anregungen geben - Sourcen sind ja mit dabei (eben nur nicht Delphi-Sourcen :? )
ck3009 - Mi 24.09.03 12:04
Titel: OK!?
Sorry mb das sagt mir jetzt nich viel. Ich habe in der delphi-hilfe unter Kopieren:Dateien einen quelltext gefunden
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15:
| procedure TFMForm.ConfirmChange(const ACaption, FromFile, ToFile: string); begin if MessageDlg(Format('%s %s to %s?', [ACaption, FromFile, ToFile]), mtConfirmation, [mbYes, mbNo], 0) = mrYes then begin if ACaption = 'Move' then MoveFile(FromFile, ToFile) else if ACaption = 'Copy' then CopyFile(FromFile, ToFile) else if ACaption = 'Rename' then RenameFile(FromFile, ToFile);
FileList.Update; end; end; |
mit dem müsste das kopieren schon mal klappen. doch wie gebe ich den pfad für fromfile bzw tofile ein. :cry:
Moderiert von
Tino: Delphi-Tasg hinzugefügt.
mb - Mi 24.09.03 12:30
Also, das Kopieren von Dateien kannst Du ganz einfach mit
Quelltext
1:
| CopyFile(existingfile, newfile, false) |
erledigen, wobei du für
existingfile den Dateipfad der Quelldatei eingibst, bei
newfile den Dateipfad der Zieldatei. Der dritte Parameter regelt, was passieren soll, wenn die Zieldatei bereits besteht.
false sagt in diesem Fall, das die Datei überschrieben werden soll. Wenn
true dort steht, würde der Kopiervorgang in diesem Fall abgebrochen werden.
Um eine Synchonisation hin zu bekommen musst Du - bevor Du eine Datei ins andere Verzeichnis kopieren kannst - prüfen, welche Datei geändert wurde. Dazu kannst Du die Größen beider Dateien vergleichen => das geht z.B. mit FileSize(), ist aber nicht die sicherste Methode. Ansonsten könntest Du die Datei öffnen und auslesen und dann Bitweise vergleichen => oder in einen Buffer lesen und diesen im Speicher vergleichen.
Diesen Prozess - Dateien vergleichen, dann kopieren - musst Du dann für alle Dateien in einem Verzeichnis durchführen.
Alle Dateien findest Du z.B. über FindFirst / FindNext. Sieh dazu einfach mal in der Delphi-Hilfe nach.
ck3009 - Mi 24.09.03 12:37
Titel: Super danke M
ich danke dir. ich werde es ma testen. ich werde die schreiben ob es klappt oder nicht. und wenn ich noch fragen habe. wenn es dich nicht stört.
Bin eben noch richtiger anfänger :D
bis dann
ck3009
mb - Mi 24.09.03 13:10
nein, es stört hier denke ich keinen => frag ruhig. dazu ist das forum ja da :)
ck3009 - Mo 29.09.03 12:10
Titel: es klappt einfach nicht
wenn einer von euch solch ein programm schon geschrieben hat schickt es mir dann bitte rüber. danke
mb - Mo 29.09.03 17:56
Na ja, nun mal langsam. Das ist hier ja kein Shop, sondern ein Programmierforum. Du sollst es ja selber machen. Tipps kannst Du dazu haben, aber wir sind (ich hoffe, die anderen stimmen zu) keine Foren-Auftragsprogrammierer.
Ich habe ja schon geschrieben, dass es zu Deinem Problem einiges im OpenSource-Bereich gibt. Z.B. Ist so ein Tool, das auch ziemlich ausgereift ist, in Unix/Linux enthalten. Dies heißt "rsync". Eine kostenlose Linux-Distribution findest Du in jeder zweiten PC-Zeitschrift und die Sourcen von einzelnen Tools auch sonst im Netz - ganz einfach.
Wo ist also das Problem? Ein bißchen Mühe musst Du schon selbst investieren.
MSCH - Mo 29.09.03 18:04
verry simple:
shFileOperation() macht das alles automatisch. Sofern Windows :-)
grez
msch
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!