Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Umbenannte Ordner erkennen (https://www.delphipraxis.net/48850-umbenannte-ordner-erkennen.html)

Baeuerle 1. Jul 2005 09:07


Umbenannte Ordner erkennen
 
Hallo zusammen,

ich habe folgendes Problem:

Kann ich erkennen, ob ein Ordner auf einem System nur umbenannt bzw. verschoben wurde und nicht neu angelegt wurde???

Hat ein Ordner evtl. eine absolut eindeutige ID die ich mir merken kann?


Danke im vorraus,

Baeuerle


P.S.: Merken der Ordnernamen bringt nichts, da ich dann nicht erkenne ob neu angelegt oder umbenannt!

marabu 1. Jul 2005 09:10

Re: Umbenannte Ordner erkennen
 
Hallo,

weder umbennen noch verschieben im selben file system ändert das creation date.

Grüße vom marabu

Baeuerle 1. Jul 2005 09:19

Re: Umbenannte Ordner erkennen
 
Ist richtig aber nicht eindeutig!
Es gibt bestimmt jede Menge Ordner mit dem Creation Date!

Kryoko 1. Jul 2005 09:35

Re: Umbenannte Ordner erkennen
 
Soweit ich weiß bietet Windows keine Möglichkeit einen Ordner eindeutig identifizieren zu können.

Wenn du nicht dein gesamtes Datensystem eindeutig identifizieren willst, könntest du dich ja mal
über "Hash"s informieren.
Anstatt dass du dann einen Ordner hashest erstellst du einen Hashwert für alle Dateien die im Ordner liegen o.ä. .
Problem hierbei ist dass du nicht den Ordner an sich hashest sondern seinen Inhalt.

Hashwerte sind eindeutig - theoretisch zumindest.

Baeuerle 1. Jul 2005 09:46

Re: Umbenannte Ordner erkennen
 
Wie Du schon sagtest, ich könnte zwar den Inhalt des Ordners hashen, jedoch würde dies schiefgehen, sobald eine Veränderung innerhalb des Ordners stattfindet.

Die Funktion die ich benötige muss aber unabhängig von dem Inhalt sein!

Ich benötige irgendeine Information über den Ordner an sich, die eindeutig und nicht an den Namen gebunden ist!

Trotzdem Danke :(

shmia 1. Jul 2005 12:36

Re: Umbenannte Ordner erkennen
 
Zitat:

Zitat von Baeuerle
Wie Du schon sagtest, ich könnte zwar den Inhalt des Ordners hashen, jedoch würde dies schiefgehen, sobald eine Veränderung innerhalb des Ordners stattfindet.

Die Funktion die ich benötige muss aber unabhängig von dem Inhalt sein!

Ich benötige irgendeine Information über den Ordner an sich, die eindeutig und nicht an den Namen gebunden ist!

Tja, ist schon ziemlich blöd, dass NTFS keine zusätzlichen Attribute vergeben kann.
Mit Attribute vergeben meine ich, das Dateien & Verzeichnisse beliebig viele Wertepaare
zugeordnet werden können.
Eine DCU - Datei könnte z.B. folgende Attribute erhalten:
Code:
Compiler | Delphi5
CompilerVersion | 5.02
Aber genug phantasiert, du musst einfach eine Datei Desktop.ini mit den Flags System & Hidden in die Verzeichnisse kopieren.
In der Ini-Datei kannst du deine eigenen Infos eintragen:
DirectoryID=4711

Infos zu Desktop.ini: http://www.pcwelt.de/know-how/tipps_...238/index.html

Waldteufel 1. Jul 2005 12:52

Re: Umbenannte Ordner erkennen
 
Hi.

Du könntest den Ordner auch durch einen Alternate-Data-Stream markieren (nur auf NTFS verfügbar).

Christian Seehase 1. Jul 2005 13:09

Re: Umbenannte Ordner erkennen
 
Moin Baeuerle,

ein Idee kann ich auch noch beisteuern.
Bei NTFS gibt es ja die Mögichkeit Daten an eine Datei anzuhängen, ohne das dies direkt ersichtlich wäre (NTFS-Streams).
Dateien können ja in Ihren Eigenschaften zusätzliche Informationen anzeigen (z.B. den Reiter Dateiinfo), die, IMHO, in diesen Streams gespeichert werden.
Eventuell lässt sich dieses ja auch mit Ordnern machen.

[EDIT]
Heute mal wieder kein "Roter Kasten" ;-)
[/EDIT]

Waldteufel 1. Jul 2005 13:10

Re: Umbenannte Ordner erkennen
 
Hi.

Zitat:

Zitat von Christian Seehase
Eventuell lässt sich dieses ja auch mit Ordnern machen.

Nicht nur eventuell, sondern sogar ganz bestimmt ;-)

//edit:
z.b. So: (Pseudocode)
Code:
procedure Markieren(ordner : string);
begin
  fs := FileStream(ordner + ':markierung', m_Write);
  fs.Write('markiert');
  fs.Free;
end;

function IsMarkiert(ordner: string) : boolean;
begin
  fs := FileStream(ordner + 'markierung');
  if fs.ReadString(length('markiert')) = 'markiert' then result := true;
  fs.Free;
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:17 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-2025 by Thomas Breitkreuz