Discussion:
dateidatum kopieren
(zu alt für eine Antwort)
Gerhard Hinze
2004-02-19 20:34:18 UTC
Permalink
Hallo!! hat jemand einen Tip??
Es werden Dateien ca >100 Stueck jeweils in einen Stream gelesen und dieser
wieder in einen anderes Verzeichnis geschrieben. Nun soll aber das vorher
ausgelesene Dateidatum auch den neu geschriebenen Dateien auch mit
uebergeben werden, ansonsten tragen ja alle den gleichen aktuellen
Zeitstempel.
Kann Jemand mir nen Tip geben??

Mit FileGetData(..) und FileSetData(e..)... komm ich irgendwie nicht zurecht
beim Schreiben der Dateien.
Vielen Dank im voraus

Gerhard

--
Alle aus und eingehende Mail sind mit "Norton-Antivirus" auf Viren geprüft
All of them from-and thorough mail is with "Norton-Antivirus" on viruses
checkedly
Torsten Munkelt
2004-02-19 21:13:33 UTC
Permalink
Hallo, Gerhard,
Post by Gerhard Hinze
Es werden Dateien ca >100 Stueck jeweils in einen Stream gelesen und dieser
wieder in einen anderes Verzeichnis geschrieben. Nun soll aber das vorher
ausgelesene Dateidatum auch den neu geschriebenen Dateien auch mit
uebergeben werden, ansonsten tragen ja alle den gleichen aktuellen
Zeitstempel.
Kann Jemand mir nen Tip geben??
Warum kopierst Du die Dateien nicht einfach? Dann
bleiben Aenderungs- und Erstellungdatum erhalten.

...
uses IdGlobal;
...
Success:=CopyFileTo('SrcFileName';'DstFileName);
...

(Die WinAPI bietet auch nen Befehl an, der einfach CopyFile heisst.)

Wenn Du die Dateien neu anlegst, bekommen sie natuerlich
neue Datumsangaben. Falls Du sie veraenderst, wuerde ich
sie _erst_ kopieren und _dann_ die Kopie veraendern (und
das Aenderungsdatum auch beibehalten). Dann stimmen
Aenderungs- und Erstellungdatum auch wieder mit dem
ueberein, was wirklich passiert ist.

Schoene Gruesse - Torsten
Gerhard Hinze
2004-02-19 21:40:27 UTC
Permalink
Vielen Dank!
Ich weiss nicht , aber die Methode per Stream erschien mir flotter zu gehen
(Netzwerklaufwerk) und Datenmengen einige 100 MB.
Trotzdem Danke ich werde es mal so probieren.
MfgŽGerhard

--
Alle aus und eingehende Mail sind mit "Norton-Antivirus" auf Viren geprüft
All of them from-and thorough mail is with "Norton-Antivirus" on viruses
checkedly
Post by Torsten Munkelt
Hallo, Gerhard,
Post by Gerhard Hinze
Es werden Dateien ca >100 Stueck jeweils in einen Stream gelesen und
dieser
Joachim Pimiskern
2004-02-19 22:22:15 UTC
Permalink
Hallo,
Post by Gerhard Hinze
Ich weiss nicht , aber die Methode per Stream erschien mir flotter
zu gehen (Netzwerklaufwerk) und Datenmengen einige 100 MB.
"Wie kann ich das Datum einer Datei oder eines Ordners
auslesen und ändern?"
http://www.delphi-source.de/tipps/dateien/?id=80

Grüße,
Joachim
Florian Hector
2004-02-20 07:20:44 UTC
Permalink
Hallo Gerhard,
Post by Gerhard Hinze
Kann Jemand mir nen Tip geben??
function GetFileDateTime(const FileName: TFileName): TDateTime;
var
FStruct: TOFSTRUCT;
wndFile: Integer;
begin
wndFile := OpenFile(PChar(FileName), FStruct, OF_SHARE_DENY_NONE);
Result := FileDateToDateTime(FileGetDate(wndFile));
CloseHandle(wndFile);
end;


function SetFileDate(Const FileName : string;Const FileDate : TDateTime):
Boolean;
var
FileHandle : THandle;
FileSetDateResult : Integer;
begin
try
try
FileHandle := FileOpen(FileName, fmOpenWrite OR fmShareDenyNone);
if FileHandle > 0 Then begin
FileSetDateResult := FileSetDate(FileHandle,
DateTimeToFileDate(FileDate));
result := (FileSetDateResult = 0);
end;
except
Result := False;
end;
finally
FileClose (FileHandle);
end;
end;



Florian
Gerhard Hinze
2004-02-20 10:38:50 UTC
Permalink
Danke Florian, das genau kann ich verwenden, aber auch allen anderen Helfern
danke ich vielmals.

--
Alle aus und eingehende Mail sind mit "Norton-Antivirus" auf Viren geprüft
All of them from-and thorough mail is with "Norton-Antivirus" on viruses
checkedly
Post by Florian Hector
Hallo Gerhard,
Post by Gerhard Hinze
Kann Jemand mir nen Tip geben??
function GetFileDateTime(const FileName: TFileName): TDateTime;
var
FStruct: TOFSTRUCT;
wndFile: Integer;
begin
wndFile := OpenFile(PChar(FileName), FStruct, OF_SHARE_DENY_NONE);
Result := FileDateToDateTime(FileGetDate(wndFile));
CloseHandle(wndFile);
end;
Boolean;
var
FileHandle : THandle;
FileSetDateResult : Integer;
begin
try
try
FileHandle := FileOpen(FileName, fmOpenWrite OR fmShareDenyNone);
if FileHandle > 0 Then begin
FileSetDateResult := FileSetDate(FileHandle,
DateTimeToFileDate(FileDate));
result := (FileSetDateResult = 0);
end;
except
Result := False;
end;
finally
FileClose (FileHandle);
end;
end;
Florian
Simon Reinhardt
2004-02-22 07:40:39 UTC
Permalink
Post by Gerhard Hinze
Hallo!! hat jemand einen Tip??
Es werden Dateien ca >100 Stueck jeweils in einen Stream gelesen und
dieser wieder in einen anderes Verzeichnis geschrieben. Nun soll aber
das vorher ausgelesene Dateidatum auch den neu geschriebenen Dateien
auch mit uebergeben werden, ansonsten tragen ja alle den gleichen
aktuellen Zeitstempel.
Kann Jemand mir nen Tip geben??
Mit FileGetData(..) und FileSetData(e..)... komm ich irgendwie nicht
zurecht beim Schreiben der Dateien.
In meiner SRUtils.pas-Grabbelkiste findest Du Funktionen zum Auslesen und
Schreiben der diversen Dateidatümmer (Create/Modify/Last Access). Download
von meiner Komponentenseite.

Simon
--
Don't panic

Homepage: http://www.picsoft.de
Delphi Fundgrube: http://www.delphi-fundgrube.de
Loading...