Avatar billede azs Nybegynder
12. august 2003 - 18:50 Der er 6 kommentarer og
2 løsninger

InternetFileExists(url)

Jeg har lavet et lille program som kan downloade en masse filer for mig. Men hvis en fil på internettet ikke er der så kommer der fejl. Er der en måde jeg kan checke hvis filen er på den url jeg har ?
Avatar billede dkn Nybegynder
12. august 2003 - 18:54 #1
hm ja men det er jo egentlig det du allerede har...

Hvis den downloader er filen der...:)
Hvis der kommer fejl er den der nok ikke.
Jeg ved ikke hvilken måde du downloader filen på, men normalt ville der være en error event.
Ellers brug try except og undgå den fejl meddelelse som kommer.
Avatar billede azs Nybegynder
12. august 2003 - 18:55 #2
Jeg bruger Indy's HTTP component hvis i lige ville vide det ;)
Avatar billede azs Nybegynder
12. august 2003 - 18:56 #3
dkn -> sådan her ser det ud. jeg kan ikke bruge except fordi jeg har en finally ;(

procedure TForm1.DownloadWithProgress(const Url: String; Const DownloadPath: String='');
  function ExtractURLFileName(const FileName: string): string;
  var
    I: Integer;
  begin
    I := LastDelimiter('/', FileName);
    Result := Copy(FileName, I + 1, MaxInt);
  end;

var
  LDestStream: TFileStream;
  DestDir : String;
  DestFileName : String;
begin
  DestDir := DownloadPath;
  if DestDir = '' then
    DestDir := ExtractFilePath(Application.ExeName);
  DestDir := AddTalingBackslash(DestDir);
  if not DirectoryExists(DestDir) then
    ForceDirectories(DestDir);
  DestFileName := ExtractURLFileName(Url);
  LDestStream := TFileStream.Create(DestDir + DestFileName, fmCreate);
  try
    HTTP.Get(Url, LDestStream);
  finally
    FreeAndNil(LDestStream);
  end;
end;
Avatar billede azs Nybegynder
12. august 2003 - 18:57 #4
Ja .. hvor er jeg dum.. jeg kan jo bare lade være med at bruge finally og så bare sætte FreeAndNil(LDestStream); efter end;. men så har jeg bare det problem at den har lavet en fil med "ingen ting i", hvis den fil ik findes.
Avatar billede dkn Nybegynder
12. august 2003 - 19:02 #5
hmm ja man kunne ligge det i en memorystream, men det er nok ikke så hensigtmessig. 
Du kan jo bruge if fileexists() then deletefile.
Men det er nu heller ikke alt for godt...
Avatar billede azs Nybegynder
12. august 2003 - 19:02 #6
Nu ved jeg ik om du kender denne Indy component, men hvis du gør. Tror du at jeg kan sætte Create af fil op i HTTPWorkBegin og lukke den ved HTTPWorkEnd uden at den laver filen hvis den ik er på nette ?
Avatar billede azs Nybegynder
12. august 2003 - 19:57 #7
Jeg har selv lige fundet ud af hvordan jeg skulle gøre så jeg tar lidt af points tilbage ;)
Avatar billede janbb Juniormester
12. august 2003 - 22:34 #8
azs: Hvad laver en Indy-koponent ?.Bare sådan helt banalt, poulært, hvis det er muligt.
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