Avatar billede diz Nybegynder
12. december 2003 - 13:45 Der er 3 kommentarer og
2 løsninger

Tjek om fil er complete

Hejsa,

Jeg er ved at lave et program som tjekker om der er uploadet en fil i en bestemt mappe. Hvis dette er tilfældet startes en handling.

Den fil som programmet kigger efter uploades på en FTP server.

Problemet er så at hvis jeg tjekker om en fil eksisterer i en mappe, med findfirst, så er det jo ikke sikkert at denne fil er færdig med at uploade.

Så det jeg efterspørger er om man på nogen måde kan tjekke om en fil er "complete"

/Sune
Avatar billede borrisholt Novice
12. december 2003 - 13:56 #1
Function FileIsOpen(const FileName : TFileName) : Boolean;
begin
  result := false;
  try
    With TFileStream.Create( FileName, fmOpenread or fmShareExclusive) Do
      Free;
  except
    result := true;
  end;
end;

Jens B
Avatar billede snowball Novice
12. december 2003 - 14:01 #2
Jens: Den holder jo ikke i byretten den der, for bare fordi filen ikke er åben, så behøves den jo ikke at være "complete" ;)

diz: Den eneste måde du kan gøre dette på, er hvis du ved hvor meget filen på forhånd fylder. Du kan tjekke den nuværende størrelse af filen med nedenstående funktion (som i øvrigt er tyvstjålet fra borrisholt ;)). Den størrelsen funktionen returnere kan du så sammenligne med hvor stor filen burde være. Det er i mine øjne den eneste ret sikre metode du kan bruge.

Function GetFileSize(FileName : TFileName) : Integer;
var
SearchRec : TSearchRec;
begin
  if FindFirst(ExpandFileName(FileName), faAnyFile, SearchRec) = 0 then
    Result := SearchRec.Size
  else
    Result := -1;
  FindClose (SearchRec);
end;

Snowball
Avatar billede diz Nybegynder
12. december 2003 - 14:09 #3
det jeg ledte efter var en funtion som kunne afsløre om filen var ved at blive uploaded. (borrisholts)

Men jeg kan sagtens se problematikken i at man jo ikke ved om filen er færdig, da det jo kan være fordi brugeren er blevet disconnnected.

Hmm... Jeg må lige tænke den igennem.

Well, mht points, så burde jeg vel give point til begge, da borrisholt løste mit oprindelige problem, mens snowball fik mig til at se et nyt problem. (eller burde jens så få point og snowball blive fratrukket, da han skabte nyt problem?!?)

Smid et svar snowball, hvis du mener du skal have point :)

/Sune
Avatar billede snowball Novice
12. december 2003 - 14:12 #4
Smider et svar. Så må du selv bestemme om jeg skal have point, og i så fald hvor mange :)

Snowball
Avatar billede diz Nybegynder
12. december 2003 - 18:10 #5
Well, jeg deler dem bare mellem jer......håber det er ok.

Og mange tak for de hurtige svar....

/Sune
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