Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Delphi Ausgefallenes Problem, Vorgehensweise bedingtes verschieben von Dateien (https://www.delphipraxis.net/179307-ausgefallenes-problem-vorgehensweise-bedingtes-verschieben-von-dateien.html)

mcam77 25. Feb 2014 18:38

Ausgefallenes Problem, Vorgehensweise bedingtes verschieben von Dateien
 
Hi,

ich suche eine elegante Lösung für folg. Problem:

aus einem Verz. sollen bestimmte Dateien verschoben werden(div. Voraussetzungen, ist ja egal).
Das entscheidende ist jetzt, dass nur alle(zusammengehörigen) Dateien komplett verschoben werden sollen(Virenscanner). Da die Dateien alle sehr klein sind wollte ich sie komplett in den Speicher kopieren, dann von der Quelle löschen, und wenn das geklappt hat im Zielordner erstellen. Wenn der Rechner plötzlich abstürzt und somit Dateien verloren gehen ist das nicht so schlimm. Viel wichtiger ist jetzt dass das löschen komplett klappt, damit da keine Leichen liegen bleiben(und evtl wieder verschoben werden). Wie würdet ihr da vorgehen?

Perlsau 25. Feb 2014 19:51

AW: Ausgefallenes Problem, Vorgehensweise bedingtes verschieben von Dateien
 
Das ist doch viel zu umständlich und fehleranfällig. Ich würde folgendes machen:

1. Versammle alle benötigten Dateinamen incl. Pfad in einer Stringliste.

2. Iteriere durch die Stringliste und benenne die Pfade um. Das Ergebnis der Umbenennung speicherst du in einer lokalen Variablen.

3. Veschiebe dabei die Dateien durch SysUtils.RenameFile.

RenameFile mit einem neuen Pfad verschiebt die Datei. Physikalisch wird dabei nur dann wirklich verschoben, wenn der neue Pfad auf einer anderen Partition liegt als der alte. Ansonsten wird einfach nur der Eintrag im Inhaltsverzeichnis der Partition geändert.

Sir Rufo 25. Feb 2014 20:04

AW: Ausgefallenes Problem, Vorgehensweise bedingtes verschieben von Dateien
 
Ich werfe jetzt mal Bei Google suchenTransactional NTFS ins Rennen.

MSDN-Library durchsuchenMoveFileTransacted

Perlsau 25. Feb 2014 20:06

AW: Ausgefallenes Problem, Vorgehensweise bedingtes verschieben von Dateien
 
Was für ein "Rennen"? Rennt hier jemand? Also ich sitze ... Oder ist das hier ein Wettrennen?

BUG 25. Feb 2014 20:27

AW: Ausgefallenes Problem, Vorgehensweise bedingtes verschieben von Dateien
 
Zitat:

Zitat von Sir Rufo (Beitrag 1249613)
Ich werfe jetzt mal Bei Google suchenTransactional NTFS ins Rennen.

Alternativ lassen sich in diesem Fall Transaktionen auf Anwendungsebene implementieren, wenn du dir eine weitere Datei als Journal mit den zu löschenden Dateinamen anlegst und verwaltest. Das komplizierteste dabei ist, die Änderungen an den richtigen Stellen zu flushen oder unbuffered I/O (siehe vorherigen Link) zu benutzen.

Wenn du dein Programm nach einem Absturz startest und das Journal ist nicht leer, dann wiederholst du zuallererst alle Löschaufträge, die sich noch im Journal befinden.

Luckie 25. Feb 2014 20:53

AW: Ausgefallenes Problem, Vorgehensweise bedingtes verschieben von Dateien
 
Vielleicht hilft dir das: http://michael-puff.de/Programmierun...nVerlass.shtml


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:43 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz