Avatar billede pbudk Nybegynder
06. marts 2002 - 12:40 Der er 5 kommentarer og
1 løsning

Sammenligning af dato på to filer

Hejsa

Jeg er ved at flikke et lille automatisk backup program sammen. Nu er jeg så stødt på problemet, at der jo kan være nogle dage, hvor jeg ikke er har maskinen tændt.
Som udgangspunkt er mit system således:

Serveren laver en backup fil hver aften. Dvs. Man, Tirs, Ons, tors, fre og lørdag laver den incremental bakup, om søndagen laver den total backup.

Hver morgen når jeg starter min klient, vil jeg gerne have kopieret denne fil overpå min klientmaskine.

Men så er jeg jo nødt til at tage højde for, at det jo ikke er hver dag, man starter maskinen (feks. i weekenden). Dette vil jeg løse ved, at sammenligne datoen for filen på serveren, med datoen for filen på klienten. Hvis filen på serveren, så er nyere end den, der er på klienten, skal filen kopieres fra server til klient.

Jeg tror jeg skal bruge FileGetDate funktionen, men jeg kan ikke rigtig finde ud af bruge den !

Er der nogen der kan give et hint ?

På forhånd tak

/pbudk

Avatar billede stoney Nybegynder
06. marts 2002 - 12:56 #1
var
  FS: TFileStream;
  FileDate: TDateTime;
begin
  FS := TFileStream.Create('C:\Test.txt', fmOpenRead);
  try
    FileDate := FileDateToDateTime(FileGetDate(FS.Handle));
  finally
    FS.Free;
  end;
end;


Stoney
Avatar billede pbudk Nybegynder
06. marts 2002 - 13:05 #2
storartet det var lige det jeg manglede.

Tusind tak Stoney
Avatar billede pbudk Nybegynder
06. marts 2002 - 13:28 #3
hm - jeg stødte lige ind i et nyt problem:

Jeg brugte følgende til at kopiere mine filer - men den opretter jo en ny istedet for at kopiere - og så kan jeg jo ikke sammenligne datoer.

LoadFromFile('FilNavn');
SaveToFile('NytFilNavn');

Har du en god ide til hvordan det kan omgåes ?
Mine filnavne ligger som strings.

/pbudk
Avatar billede stoney Nybegynder
06. marts 2002 - 13:34 #4
Sådan sætter du en fil dato
-----------
function SetFileDateTime(FileName : String; NewDateTime : TDateTime): Boolean;
var
FileHandle: Integer;
FileTime: TFileTime;
LFT: TFileTime;
LST: TSystemTime;
begin
Result := False;
Try
DecodeDate(NewDateTime, LST.wYear, LST.wMonth, LST.wDay);
DecodeTime(NewDateTime, LST.wHour, LST.wMinute, LST.wSecond,LST.wMilliSeconds);
IF SystemTimeToFileTime(LST, LFT) Then
begin
IF LocalFileTimeToFileTime(LFT, FileTime) Then
begin
FileHandle := FileOpen(FileName, fmOpenReadWrite or
fmShareExclusive);
IF SetFileTime(FileHandle, NIL, NIL, @FileTime) Then
Result := True;
end;
end;
Finally
FileClose(FileHandle);
end;
end;

Stoney
Avatar billede pbudk Nybegynder
06. marts 2002 - 13:48 #5
Endnu engang tusind tak.

Skal jeg smide lidt flere point ?
Avatar billede stoney Nybegynder
06. marts 2002 - 13:51 #6
Nej, det er okay

Stoney
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester