AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi HTTP Server -> genauen Dateinamen ermitteln?!
Thema durchsuchen
Ansicht
Themen-Optionen

HTTP Server -> genauen Dateinamen ermitteln?!

Ein Thema von alleinherrscher · begonnen am 2. Aug 2005 · letzter Beitrag vom 2. Aug 2005
 
Benutzerbild von alleinherrscher
alleinherrscher

Registriert seit: 8. Jul 2004
Ort: Aachen
797 Beiträge
 
Delphi XE2 Professional
 
#7

Re: HTTP Server -> genauen Dateinamen ermitteln?!

  Alt 2. Aug 2005, 21:44
So hab ichs gemacht Matze! Zwar kann es vorkommen, dass 2,3 vergebliche anfragen gesendet werden (ca. 2 sekunden pro anfrage) aber dat is ja egal...vielen dank an alle!

Grüße, Alleinherrscher

Für alle die, dies interessiert hab ich hier mal den Quelltext:

Delphi-Quellcode:
function HTTPFileExists(aURL: String): Boolean;
begin
  with TIdHTTP.Create(nil) do
  try
    try
      Head(aURL);
      Result := ResponseCode = 200;
    except
      Result := False;
    end;
  finally
    Free;
  end;
end;

Function TForm1.GetFileFromInet(Const fileURL, AFileNameToSave: String) : Boolean;
Const
  BufferSize = 1024;
Var
  sAppName: String;
  hSession, hURL: hInternet;
  buffer: Array[1..BufferSize] Of Byte;
  bufferLen: DWord;
  mem: TMemoryStream;
Begin
  Result := False;
  sAppName := ExtractFileName(Application.ExeName);
  hSession := InternetOpen(PChar(sAppName), INTERNET_OPEN_TYPE_PRECONFIG, Nil, Nil, 0);
  If ( hSession <> Nil ) Then
  Begin
    Try
      hURL := InternetOpenURL(hSession, PChar(fileURL), Nil, 0, 0, 0);
      If ( hURL <> Nil ) Then
      Begin
        Try
          mem := TMemoryStream.Create;
          Repeat
            application.ProcessMessages;
            BufferLen := 0;
            InternetReadFile(hURL, @Buffer, SizeOf(Buffer), BufferLen);
            mem.Write(buffer, bufferlen);
          Until bufferLen = 0;
          mem.SaveToFile(AFileNameToSave);
             
          mem.Free;
          Result := True;
        Finally
          InternetCloseHandle(hURL);
        End;
      End;
    Finally
      InternetCloseHandle(hSession);
    End;
  End;
End;

procedure TForm1.Button1Click(Sender: TObject);
var Fehler:boolean;
datei:textfile;
version:string;
StreamObject:tmemorystream;

begin

assignfile(datei,pfad+'version.txt');
reset(datei);
readln(datei,version);
closefile(datei);

memo1.lines.add('Version auf dem Rechner: '+version);

i:=strtoint(version);

memo1.lines.add('Suche nach neuster Version...');
while HTTPFileExists('http://...'+inttostr(i)+'.exe')=false do
begin
inc(i);
application.ProcessMessages;
end;
memo1.lines.add('neuste Version: '+inttostr(i));

if inttostr(i)<>version then begin
memo1.lines.add('Lade neue Version herunter. Bitte waren...');
GetFileFromInet('http://...'+inttostr(i)+'.exe',pfad+inttostr(i)+'.exe')
end
else begin
update:=False;
memo1.lines.add('Ihre Files sind auf dem neusten Stand.');
exit;
end;
update:=True;
memo1.lines.add('Download komplett. Starte Update...');
memo1.Lines.add('Befolgen Sie die Anweisungen auf dem Bildschirm...');
ShellExecute(hinstance,'open',pchar(inttostr(i)+'.exe'),nil,pchar(pfad),sw_show);

assignfile(datei,pfad+'version.txt');
rewrite(datei);
writeln(datei,inttostr(i));
closefile(datei);


end;
Gruß, Alleinherrscer
„Software wird schneller langsamer als Hardware schneller wird. “ (Niklaus Wirth, 1995)

Mein Netzwerktool: Lan.FS
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:52 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 by Thomas Breitkreuz