Moin !
Ich habe das jetzt so gelöst:
Delphi-Quellcode:
procedure TLV_HTTP_Server.HTTPServer_CommandGet(AContext : TIdContext;
ARequestInfo : TIdHTTPRequestInfo;
AResponseInfo : TIdHTTPResponseInfo);
var
LFilename:
string;
LPathname:
string;
begin
LFilename := ARequestInfo.Document;
if (LFilename = '
/')
or (LFilename = '
/PageResult')
then begin
LFilename := '
/index.html';
end;
LPathname := HTMLDir + LFilename;
if FileExists(LPathname)
then begin
while FileInUse(LPathname)
do Application.ProcessMessages;
AResponseInfo.ContentStream := TFileStream.Create(LPathname, fmOpenRead + fmShareDenyNone);
//fmShareDenyWrite);
end else begin
AResponseInfo.ResponseNo := 404;
AResponseInfo.ContentText := '
The requested URL '
+ ARequestInfo.Document
+ '
was not found on this server.';
end;
end;
Das ist der Code für den Webserver (Anfrage vom Client).
Und hiermit überprüfe ich ob die Datei in Benutzung ist:
Delphi-Quellcode:
function FileInUse(FileName: string): Boolean;
var hFileRes: HFILE;
begin
Result := False;
if not FileExists(FileName) then exit;
hFileRes := CreateFile(PChar(FileName),
GENERIC_READ or GENERIC_WRITE,
0,
nil,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
0);
Result := (hFileRes = INVALID_HANDLE_VALUE);
if not Result then
CloseHandle(hFileRes);
end;
Bis jetzt geht das ganz gut. Ob es der Weisheit letzter Schluss ist .. Weiss ich noch nicht.