![]() |
Datei öffnen die von anderen Programm verwendet wird
Hi,
ich habe hier eine Ini-Datei die von einen anderen Programm verwendet wird. Wenn ich die Datei nun mit TMemIniFile öffnen will, bekomme ich die Meldung das die Datei derzeit genutzt wird. Öffne ich die Datei mit Notepad oder einen anderen Programm gehts. Wieso? Benötigt TMemIniFile denn exklusiven Zugriff oder woran liegts? |
Re: Datei öffnen die von anderen Programm verwendet wird
TMemIniFile verwendet TStrings.LoadFromFile, was mit fmShareDenyWrite arbeitet.
|
Re: Datei öffnen die von anderen Programm verwendet wird
Zitat:
|
Re: Datei öffnen die von anderen Programm verwendet wird
statt TMemIniFile nur TIniFile verwenden?
|
Re: Datei öffnen die von anderen Programm verwendet wird
Zitat:
|
Re: Datei öffnen die von anderen Programm verwendet wird
Über einen Umweg über TFileStream könnte es auch gehen.
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var Stream: TFileStream; List: TStringList; Ini: TMemIniFile; begin try Stream := TFileStream.Create('C:\boot.ini',fmOpenRead); List := TStringList.Create; Ini := TMemIniFile.Create(''); try List.LoadFromStream(Stream); Ini.SetStrings(List); ShowMessage(Ini.ReadString('boot loader','timeout','nix')); finally FreeAndNil(Stream); FreeAndNil(List); FreeAndNil(Ini); end; except ShowMessage('Erzeugen von FileStream fehlgeschlagen'); end; end; |
Re: Datei öffnen die von anderen Programm verwendet wird
über Größenbeschränkung ist mir nichts bekannt, ich weiß nur, dass ich mit TIniFile eine Ini-Datei beliebig oft öffnen konnte, auch von unterschiedlichen Programmen aus. Kommt aber auch darauf an, auf welche Art andere Programme darauf zugreifen. Es gibt ja Programme, die ihre Ini- und Log-Dateien sperren.
|
Re: Datei öffnen die von anderen Programm verwendet wird
Hallo Deddy,
du willst die Datei im compatibility mode öffnen? Das ist in der Praxis das Gleiche wie fmShareExclusive - besser so:
Delphi-Quellcode:
Grüße vom marabu
// ...
Stream := TFileStream.Create('C:\boot.ini', fmOpenRead or fmShareDenyNone); // ... |
Re: Datei öffnen die von anderen Programm verwendet wird
Hallo marabu,
sorry, hast Recht ;) |
Re: Datei öffnen die von anderen Programm verwendet wird
ich verwende jetzt die normale TIniFile-Klasse. Es kommt zwar keine Meldung, aber die Datei wird anscheinend nicht geladen.
Delphi-Quellcode:
Meine StringList bleibt leer. Noch 'ne Idee?
fIniFile := TIniFile.Create(FileName);
Sections := TStringList.Create; fIniFile.ReadSections(Sections); |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:57 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