Ładowanie zawartości pliku do Memo - plik używany przez inny proces

0

Cześć.
Mam problem z moją aplikacją.
Program ma za zadanie pobrać zawartość pliku C:\WINDOWS\pfirewall.log do kompontentu memo.

procedure TForm3.Button1Click(Sender: TObject);
begin
  Memo1.Lines.Loadfromfile('C:\WINDOWS\pfirewall.log');
end;

Problem w tym że w określonych sytuacjach systemowy proces svchost.exe korzysta z tego pliku, przez co nie mogę pobrać zawartości.

Cannot open file "C:\WINDOWS\pfirewall.log". Proces nie może uzyskać dostępu do pliku, ponieważ jest on używany przez inny proces.
Co najciekawsze notatnik może korzystać z tego pliku. Na razie rozwiązałem problem za pomocą API (otwieranie w notatniku tego pliku).
Jak to rozwiązać?

0
Patryk27 napisał(a)

Na razie rozwiązałem problem za pomocą API (otwieranie w notatniku tego pliku).

Co ma jedno do drugiego?

?
Tak to chwilowo rozwiązałem.

procedure TForm1.Button4Click(Sender: TObject);
begin
ShellExecute(Handle,'open', 'c:\windows\notepad.exe','c:\windows\pfirewall.log', nil, SW_SHOWNORMAL) ;
end;

Poszukam jeszcze w googlach o tym.

1
procedure TForm3.Button2Click(Sender: TObject);
var
  fs: TFileStream;
begin
  fs := TFileStream.Create('f:\obrazy\test.log', fmOpenRead);
  try
    memo1.Lines.LoadFromStream(fs);
  finally
    fs.Free;
  end;
end;
0

To samo :(, pliku nie ładuje. Jak ten notatnik robi że otworzyć może, a mój program nie może?
Rozwiązałem przez... skopiowanie pliku i otwarcie go we własnej lokalizacji. Może być, bo i tak w przyszłości to się przyda :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1