Einzelnen Beitrag anzeigen

moelski

Registriert seit: 31. Jul 2004
1.110 Beiträge
 
Delphi 2010 Professional
 
#9

Re: 1 Datei und 2 Prozesse ...

  Alt 10. Mär 2009, 11:07
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.
Dominik Schmidt
Greetz Dominik

I love Delphi 2007/2010
  Mit Zitat antworten Zitat