Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Identische Files erkennen (https://www.delphipraxis.net/115584-identische-files-erkennen.html)

SebE 14. Jun 2008 14:28


Identische Files erkennen
 
Hallo Freunde,

Delphi-Quellcode:
var
  f1, f2: file of ...;

begin
assignFile(f1, DATEINAME_1);
reset(f1);

...

assignFile(f1, DATEINAME_2); //zu dieser Zeit ist DATEINAME_1 unbekannt
reset(f2);

...

closeFile(f1);
closeFile(f2)
end.
Gibt es eine Möglichkeit, aus den Dateivariablen den Dateinamen zu Extrahieren?
Der genaue Name ist eigentlich unwichtig...ich muss nur überprüfen, ob die zweite Datei die selbe ist, wie die erste.
Wichtig: die beiden Dateinamen existieren nicht zu gleichen zeit! (ich kann also nicht einfach, die beiden auf Gleichheit prüfen).

Ich muss also (NUR) mit diesen Datei-Variablen arbeiten...wie verarbeitet die Pascal überhaupt?
was steht alles hinter f1 und f2? Der Name (oder eine eindeutige Datei-ID, die für die beiden Variablen, die selbe wäre)? Wenn ja, wie kommt man an diese Informationen?

Ich hoffe, dass ihr mir helfen könnt.
Bin schon auf Antworten (und vor allem Hintergrund-Informationen) gespannt

lbccaleb 14. Jun 2008 14:31

Re: Identische Files erkennen
 
suche hier im forum mal nach crc32 ;-)

das sollte deine wünsche zufrieden stellen ;-)

eidt:
hier mal ein gutes bsp solch einer anwendung von drd32! incl erstellen von sfv dateien:

TDFCRC32

Matze 14. Jun 2008 14:32

Re: Identische Files erkennen
 
Hallo,

nur als Hinweis: Dafür eignen sich Hashwerte ganz gut. Du erstellst einen Hash der ersten Datei (also einen String-Wert) und wenn es die zweite Datei gibt dort ebenfalls. Diese Strings kannst du dann problemlos vergleichen.
Hash-Funktionen findest du in der DP oder natürlich auch im DEC.

Grüße

Apollonius 14. Jun 2008 14:44

Re: Identische Files erkennen
 
Hashs zu verwenden halte ich an dieser Stelle für falsch. Richtig ist meiner Meinung nach NtQueryInformationFile, wobei es ein paar Fallen gibt - siehe Comments-Sektion.

Du kannst auch deine Datei-Variable nach TFileRec casten und dir dort Name anschauen - der Nachteil ist, dass das exakt der Name ist, der bei AssignFile angegeben wird, das kann sich also unterscheiden, falls du es einmal mit Pfad und einmal ohne angegeben hast.

himitsu 15. Jun 2008 17:19

Re: Identische Files erkennen
 
du willst also nicht die Dateiihnalte vergleichen?

in NTFS (vorallem in Vista gibt es irgendwo eine nette API dafür) kann man Dateien eine eindeutige ID zuweisen lassen ... diese ID müßt man nur noch auslesen (sollte über das Handle möglich sein) und vergleichen.

(aber IDs sind nur innerhalb einer Partition eindeutig ... müßte man nun also noch die Prattition/Laufwerk, wo die dateien drauf sind vergleichen)


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:48 Uhr.

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