AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Auf Textdatei zugreifen

Ein Thema von simjoh · begonnen am 12. Apr 2007 · letzter Beitrag vom 12. Apr 2007
Antwort Antwort
Seite 1 von 2  1 2      
simjoh

Registriert seit: 13. Nov 2006
Ort: Asslar
99 Beiträge
 
Delphi 7 Enterprise
 
#1

Auf Textdatei zugreifen

  Alt 12. Apr 2007, 12:36
Hallo,

ich hätt da gerne mal ein Problem:

Ich will aus einer Textdatei fortwährend die letzte Zeile auslesen. Diese Textdatei wird aber fortwährend von einem anderen Programm beschrieben (so alle 0,5 bis 1 Sekunden etwa). Wenn ich mit reset(datei) auf die Textdatei zugreifen will (mit Hilfe eines Timers, alle 5 ms), kommt (nicht immer, aber doch manchmal) die Fehlermeldung e/a-Fehler 32. Dies ist wohl eine Windows Fehlermeldung, wenn auf eine gemeinsam genutzte Datei zugegriffen wird. Wahrscheinlich wird wohl genau in diesem Moment in die Datei geschrieben. Die Textdatei ist aber nur kurz zum Schreiben geöffnet und wird dann wieder geschlossen.

Im Prinzip sieht meine Timerproc so aus:

Delphi-Quellcode:
reset(datei); {hier wird die Fehlermeldung ausgelöst}

sl := TStringList.Create;
try
  sl.LoadFromFile('c:\Textdatei.txt')
finally
  sl.free
end;

fileclose(datei);
Wie kann man herausfinden, ob in die Textdatei von dem anderen Programm geschrieben wird um zu verhindern, dass reset(datei) eine Fehlermeldung erzeugt? Dann soll reset(datei) nicht ausgeführt werden und die Timerproc einfach verlassen werden.

Wäre für jeden Tipp dankbar.

Herzliche Grüße
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Auf Textdatei zugreifen

  Alt 12. Apr 2007, 12:37
Nimm besser einen Stream
Markus Kinzler
  Mit Zitat antworten Zitat
simjoh

Registriert seit: 13. Nov 2006
Ort: Asslar
99 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: Auf Textdatei zugreifen

  Alt 12. Apr 2007, 12:38
Wie geht das? Wärst du so nett mir ein Beispiel zu geben?
  Mit Zitat antworten Zitat
Benutzerbild von Andidreas
Andidreas

Registriert seit: 27. Okt 2005
1.110 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#4

Re: Auf Textdatei zugreifen

  Alt 12. Apr 2007, 12:48
du könntest aber auch denn IOResult abfragen

Delphi-Quellcode:

{$I-}

While IOResult = 32 Do
Begin
  Reset(txtFile);
End;

{$I+}

//Restliche Verarbeitung
Ein Programmierer Programmiert durchschnittlich 15 Code Zeilen pro Tag
Wir sind hier doch nicht bei SAP!!!

Aber wir habens bald
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.056 Beiträge
 
Delphi 12 Athens
 
#5

Re: Auf Textdatei zugreifen

  Alt 12. Apr 2007, 12:48
Schau unter Delphi-Referenz durchsuchenreset, dort steht wie man diese Fehlermeldung unterdrückt.

Dann könntest du auch mal versuchen mit FileMode auf NurLese-Zugrif umzuschalten.
eventuell erlaub das andere Programm ja einen reinen Lesezugriff, dann könntest du sogar die Datei geöffnet lassen und bräuchtest immer nur die hinzugefügten Daten auslesen.

Das Auslesen nur der neuen Daten wäre eh von Vorteil, auch wenn du die datei jedesmal neu öffnest.


PS: was passiert eigentlich, wenn das andere Programm grade in die Datei schreiben will, wärend du sie geöffnet hast?
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Benutzerbild von Andidreas
Andidreas

Registriert seit: 27. Okt 2005
1.110 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#6

Re: Auf Textdatei zugreifen

  Alt 12. Apr 2007, 12:51
Zitat von himitsu:
PS: was passiert eigentlich, wenn das andere Programm grade in die Datei schreiben will, wärend du sie geöffnet hast?
dann wird vermutlich das andere programm eine fehlermeldung kriegen!!!

FileClose(’C:\Temp\Test.txt’); das da könnte evtl. auch helfen...
dadurch schließt du die datei wieder...
aber was beim anderen programm dadurch passiert... kp... müsstest du halt mal testen...
Ein Programmierer Programmiert durchschnittlich 15 Code Zeilen pro Tag
Wir sind hier doch nicht bei SAP!!!

Aber wir habens bald
  Mit Zitat antworten Zitat
simjoh

Registriert seit: 13. Nov 2006
Ort: Asslar
99 Beiträge
 
Delphi 7 Enterprise
 
#7

Re: Auf Textdatei zugreifen

  Alt 12. Apr 2007, 12:58
Ich probiers gerade mal und schau mal was geht, danke für die Hilfe. Melde mich ggf nochmal.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.056 Beiträge
 
Delphi 12 Athens
 
#8

Re: Auf Textdatei zugreifen

  Alt 12. Apr 2007, 13:00
Zitat von Andidreas:
dann wird vermutlich das andere programm eine fehlermeldung kriegen!!!
darauf wollte ich hinaus

Wenn es bei ihm 'nen Zugriffsfehler gibt, dann pasiert ja noch nicht viel ... auslesen kann er das Neue später immernoch,

aber das andere Programm wird da vermutlich große Probleme bekommen und eventuell die Daten nicht speichern.


Zitat von Andidreas:
FileClose(’C:\Temp\Test.txt’);
> Delphi-Referenz durchsuchenFileClose ... das wird die Dateivarable verlangt und das macht er schon richtig
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
simjoh

Registriert seit: 13. Nov 2006
Ort: Asslar
99 Beiträge
 
Delphi 7 Enterprise
 
#9

Re: Auf Textdatei zugreifen

  Alt 12. Apr 2007, 13:04
Hab jetzt mal

Delphi-Quellcode:
{$I-}
  if IOResult <> 32 then
  begin

    Reset(Datei[1]);

  end
  else
    exit;
  {$I+}
probiert. Merkwürdigerweise ist ein eingefügter Haltepunkt bei "exit" grün. Kommt das Prog dort nie hin?
  Mit Zitat antworten Zitat
simjoh

Registriert seit: 13. Nov 2006
Ort: Asslar
99 Beiträge
 
Delphi 7 Enterprise
 
#10

Re: Auf Textdatei zugreifen

  Alt 12. Apr 2007, 13:16
Habs gerad probiert, funzt nett.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:20 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz