Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Erstellt (am) einer Datei ändern (https://www.delphipraxis.net/31182-erstellt-am-einer-datei-aendern.html)

---Bernhard--- 5. Okt 2004 18:41


Erstellt (am) einer Datei ändern
 
Hi!

Habe folgendes Problem:
Mein MP3-Stick "ordnet" die Lieder nach dem Erstellungsdatum. Wenn ich jetzt die Reihenfolge festlegen will, dann möchte ich natürlich nicht alles löschen und in der gewünschten Reihenfolge wieder draufkopieren. Also wollte ich jetzt nen MP3-Stick-Manager programmieren, der das Erstellungsdatum der MP3-Dateien entsprechend ändert... Leider hab ich aber keine Ahnung, wie ich das Datum ändern kann. Hoffe ihr könnt mir weiterhelfen! (Habe die Suche benutzt aber leider nichts Passendes gefunden)

:hi: Bernhard

Tubos 5. Okt 2004 18:54

Re: Erstellt (am) einer Datei ändern
 
Aber Google hast du nicht benutzt, oder?

[google]Delphi Datum einer Datei ändern[/google]

Da findet man z.B. das hier:
http://www.delphi-source.de/tipps/dateien/?id=80

Tubos

Christian Seehase 5. Okt 2004 20:13

Re: Erstellt (am) einer Datei ändern
 
Moin Zusammen,

warum in die Ferne schweifen? ;-)

Hier im Forum suchenGetFileTime / Hier im Forum suchenSetFileTime

sCrAPt 5. Okt 2004 20:16

Re: Erstellt (am) einer Datei ändern
 
Wo werden diese Daten eigentlich gespeichert?

http://og4all.de/s.jpg, sCrAPt

Luckie 5. Okt 2004 20:20

Re: Erstellt (am) einer Datei ändern
 
Im Dateisystem.

---Bernhard--- 5. Okt 2004 20:24

Re: Erstellt (am) einer Datei ändern
 
Vielen Dank für eure Antworten! Das war genau das was ich gesucht hab! :-D

(!!! DP4EVER !!!)

sCrAPt 6. Okt 2004 12:52

Re: Erstellt (am) einer Datei ändern
 
Zitat:

Zitat von Luckie
Im Dateisystem.

Kommt man da auch ohne die o.g. Proceduren rann?

http://og4all.de/s.jpg, sCrAPt

Luckie 6. Okt 2004 13:43

Re: Erstellt (am) einer Datei ändern
 
Wenn du das Dateisystem kennst...

sCrAPt 6. Okt 2004 15:31

Re: Erstellt (am) einer Datei ändern
 
Das liegt doch auf »Spur null«, oder?

http://og4all.de/s.jpg, sCrAPt

Christian Seehase 6. Okt 2004 15:48

Re: Erstellt (am) einer Datei ändern
 
Moin Scrapt,

da verwechselst Du jetzt Dateisystem und Bootsektor.

sCrAPt 6. Okt 2004 15:50

Re: Erstellt (am) einer Datei ändern
 
Wo ist dann das Dateisystem? (Soll ich dazu einen neuen Thread eröffnen?) Das Datum wird doch wohl kaum in der Datei gespeichert, oder?

http://og4all.de/s.jpg, sCrAPt

Christian Seehase 6. Okt 2004 15:53

Re: Erstellt (am) einer Datei ändern
 
Moin Scrapt,

da das Thema als solches schon recht komplex ist, und somit die Diskussion umfangreicher ausfallen könnte, wäre ein neuer Thread wohl wirklich besser.

---Bernhard--- 6. Okt 2004 21:39

Re: Erstellt (am) einer Datei ändern
 
So, jetzt hab ich leider nochmal ein Problem...
Das ändern des Datums einer Datei auf der Festplatte geht zwar jetzt ohne Probleme, aber das ändern auf meinem MP3-(USB)-Stick leider nicht. :(
Die Funktion gibt immer false zurück (==> nicht erfolgreich). Lesen klappt aber ohne Probleme.
Ich habe den Code von Tubos genommen ( http://www.delphi-source.de/tipps/dateien/?id=80 ).

Hoffe, ihr könnt mir auch bei diesem Problem weiterhelfen...
Danke im Vorraus

Bernhard

PS: Evtl. liegt es daran, dass der Code die Funktion "SetFileTime" von der unit Windows benutzt.

[edit]Benutze WinXP (NTFS) und der Stick ist FAT[/edit]

---Bernhard--- 8. Okt 2004 15:33

Re: Erstellt (am) einer Datei ändern
 
Kann mir denn keiner helfen? :pale:

sCrAPt 8. Okt 2004 20:53

Re: Erstellt (am) einer Datei ändern
 
Meine bescheidenen aber vieleicht nicht korrekten Vermutungen:
  • Der Stick gibt der Funktion keinen Schreibzugriff
  • Die Funktion funktioniert auf einen FAT-System nicht
  • Der Stick simuliert nur ein FAT-System
Für Alle 3 Vermutungen hätte ich aber keine Lösung :(

http://www.og4all.de/s.jpg, sCrAPt

---Bernhard--- 9. Okt 2004 10:37

Re: Erstellt (am) einer Datei ändern
 
Hi, ich bin’s noch mal.

Hab jetzt bisschen was geändert und herausgefunden, dass er den Pfad nicht gemocht hat. Hab den jetzt geändert und jetzt geht es wieder. Habe den Fehler am Anfang nicht bemerkt gehabt weil es beim Laden keine Probleme gab.

Danke noch mal für eure Hilfe! :thumb:

Vader 9. Okt 2004 11:38

Re: Erstellt (am) einer Datei ändern
 
hallo hab den beitrag von delphi-source.de gelesen und hätte da eine frage,
wie rufe ich diese funktion auf die die dateieigenschaften ändern soll ?

In folgender Prozedur wird dargestellt, wie diese drei Daten eines Ordners oder einer Datei auch geändert werden können
Code:
function ChangeFileDate(const path: string; const Creation, LastAccess,
  LastWrite: TDateTime): Boolean;
var
  hFile: THandle;
  ftCreationUTC, ftLastAccessUTC, ftLastWriteUTC: TFileTime;
  ftCreationLocal, ftLastAccessLocal, ftLastWriteLocal: TFileTime;
  stCreationLocal, stLastAccessLocal, stLastWriteLocal: TSystemTime;
begin
  result := false;
  hFile := CreateFile(PChar(path), GENERIC_READ or GENERIC_WRITE, 0, nil,
  OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, 0);
  if (hFile <> INVALID_HANDLE_VALUE) then
    try
      //Umwandlung von TDateTime in Systemzeitformat
      DateTimeToSystemTime(Creation, stCreationLocal);
      DateTimeToSystemTime(LastAccess, stLastAccessLocal);
      DateTimeToSystemTime(LastWrite, stLastWriteLocal);
      //Umwandlung von Systemzeitformat in lokales Dateizeitformat
      if (SystemTimeToFileTime(stCreationLocal, ftCreationLocal)) and
      (SystemTimeToFileTime(stLastAccessLocal, ftLastAccessLocal)) and
      (SystemTimeToFileTime(stLastWriteLocal, ftLastWriteLocal)) then begin
        //Umwandlung von lokalem Dateizeitformat in Weltzeit
        if (LocalFileTimeToFileTime(ftCreationLocal, ftCreationUTC)) and
        (LocalFileTimeToFileTime(ftLastAccessLocal, ftLastAccessUTC)) and
        (LocalFileTimeToFileTime(ftLastWriteLocal, ftLastWriteUTC)) then begin
          result:=SetFileTime(hFile, @ftCreationUTC, @ftLastAccessUTC, @ftLastWriteUTC);
        end;
      end;
    finally
      CloseHandle(hFile);
    end;
end;

mfg vader

---Bernhard--- 9. Okt 2004 18:33

Re: Erstellt (am) einer Datei ändern
 
Schau dir doch die Deklaration der Funktion an:
Code:
function ChangeFileDate(const path: string; const Creation, LastAccess,
  LastWrite: TDateTime): Boolean;
Also z.B. so:
Code:
procedure TForm1.Button1Click(Sender: TObject);
var erstellung, zugriff, schreibzugriff: TDateTime;
begin
  erstellung := StrToDateTime('01.01.2004 12:00');
  zugriff := StrToDateTime('01.01.2004 12:00');
  schreibzugriff := StrToDateTime('01.01.2004 12:00');
  ChangeFileDate('c:\temp\test.bmp', erstellung, zugriff, schreibzugriff);
end;
Bernhard :hi:

Vader 9. Okt 2004 18:50

Re: Erstellt (am) einer Datei ändern
 
hallo bernhard,

herzlichen dank,so funzt es :lol:
mfg vader


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:11 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