Registriert seit: 8. Jul 2004
Ort: Aachen
797 Beiträge
Delphi XE2 Professional
|
Re: HTTP Server -> genauen Dateinamen ermitteln?!
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
|
|
Zitat
|