![]() |
Texdatei öffen
Hallo,
ich möchte eine vorhandene Textdatei nur zum lesen öffen, gleichzeitig soll aber ein anderes Programm in die Datei schreiben dürfen. Wie ich es jetzt mache, funktioniert es nicht, weil das andere Programm nicht in die Datei schreiben kann.
Delphi-Quellcode:
Was mache ich falsch?
OpenDialog1.Filter := 'DRM Log Files|*.log;*.txt;*.bak|All Files|*.*';
if not OpenDialog1.Execute then Exit; Filemode:= fmOpenRead or fmShareCompat; {$I-} AssignFile(f, OpenDialog1.FileName); Reset(f); {$I+} |
Re: Texdatei öffen
Tag :hi:
Erstmal: Garnicht :mrgreen: -> Du kannst eine Datei nicht mit zwei Programmen gleichzeitig bearbeiten. Frage: Wozu soll dass den gut sein? Bei sowas kommt meistens (Un)Kraut hinten raus. Du könntest evt. eine Art "Buffer" dazwischen schieben. Jedes Programm bearbeitet die Datei(ohne direkt in die Datei zu schreiben!) und am schluss wird gespeichert... mfg edit(2): [ot]
Delphi-Quellcode:
vofür sind diese Befehele?
{$I-}
{$I+} [/ot] |
Re: Texdatei öffen
Zitat:
|
Re: Texdatei öffen
Es sollen ja nicht beide Programme reinschreiben. Also nochmal: Ich will nur lesen. Das andere Programm soll aber reinschreiben dürfen, währen die Datei von meinem Programm geöffnet ist. Was das andere Programm dann neu reinschreibt, interessiert mich nicht. Das Problem ist nur, dass mein Programm die Datei als Erstes öffnet.
|
Re: Texdatei öffen
Warum liest du die Datei nicht ein und schließt sie danach wieder, bspw. mit einer StringList, oder einem FileStream?
MfG Pr0g |
Re: Texdatei öffen
Ich könnte auch ne kopie erstellen und die dann auslesen, möchte ich aber nicht, da dies zu lange dauern würde. Die text Datei kann schonmal 5-10Mb groß werden.
Also nochmal mein Problem: Filemode scheint nicht für Textdateien zu gelten. Wie öffne ich eine Textdatei readonly und das sie von anderen gleichzeitig beschrieben werden kann? Ich hätte gedacht, dass das ganz einfach mit Filemode geht. |
Re: Texdatei öffen
Hallo carknue,
fmShareCompat wird heute nur noch in den seltensten Fällen gebraucht (compatible bezieht sich auf DOS und SHARE.EXE). Mach es besser so:
Delphi-Quellcode:
Grüße vom marabu
var
fTExt: TextFile; begin AssignFile(fText, ''); TTextRec(fText).Mode := fmOpenRead or fmShareDenyNone; TTextRec(fText).Mode := fmOpenWrite or fmShareDenyWrite; Reset(fText); CloseFile(fText); end. |
Re: Texdatei öffen
So kriege ich die Datei überhaupt nicht auf. Error 102 Datei wird schon benutzt?!? :gruebel:
|
Re: Texdatei öffen
Hast du auch zwischen die > '' < den Dateinamen geschrieben? :wink:
mfg |
Re: Texdatei öffen
Ja klar. Die error Abfang routine spricht bei jedem Versuch die Datei zu öffen an, obwohl sie von keinem anderen Programm geöffnet ist. Code sieht so aus:
Delphi-Quellcode:
IOResult ist <>0
OpenDialog1.Filter := 'DRM Log Files|*.log;*.txt;*.bak|All Files|*.*';
if not OpenDialog1.Execute then Exit; ListBox1.Clear; paint; //Filemode:= fmOpenRead or fmShareCompat; Button1.Enabled := False; Button3.Enabled := False; Button5.Enabled := False; {$I-} AssignFile(f, OpenDialog1.FileName); TTextRec(f).Mode := fmOpenRead or fmShareDenyNone; TTextRec(f).Mode := fmOpenWrite or fmShareDenyWrite; Reset(f); {$I+} if IOResult = 0 then FileIsThere := true else FileIsThere := false; if FileIsThere then begin . . . Mit filemode läßt sich die Datei wenigstens öffnen... :gruebel: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:38 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-2025 by Thomas Breitkreuz