AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi TFileStream - Datei bereits geöffnet ?
Thema durchsuchen
Ansicht
Themen-Optionen

TFileStream - Datei bereits geöffnet ?

Ein Thema von slemke76 · begonnen am 28. Mai 2008 · letzter Beitrag vom 19. Jun 2008
Antwort Antwort
Seite 2 von 3     12 3      
slemke76

Registriert seit: 29. Mär 2005
Ort: Quakenbrück
146 Beiträge
 
#11

Re: TFileStream Problem - Datei bereits geöffnet ?

  Alt 28. Mai 2008, 19:46
Hi !

@DeddyH:
Ist ein guter Tip, damit könnte ich alternativ zu TFileStream die Fehler umschiffen; ich probiers.

@Die Muhkuh:
Könnten dann nicht die vermeintlich neueren Daten durch ältere überschrieben werden ?
Die besagte Datei wird *definitiv* nur durch die Anwendung in meinem Fehlerfall geöffnet und geschlossen. Wenn die Datei nun noch offen ist (wie er behauptet), dann muss das ja vom letzten Durchlauf kommen !? Wenn ich dann fmShareDenyNone verwende, könnte es dann passieren, dass der nächste Durchlauf mit den Daten des vorherigen überschrieben wird ?

@littleDave:
Die Datei muss jedes mal neu erstellt werden, aber ich weiss gar nicht, warum ich dann so einen Blödsinn da drin stehen habe; ich probiers aus !

@all: Es handelt sich i.ü. um einen W2k3 Server.

Ich suche eigentlich soetwas wie ein .Flush oder auch das Closehandle - eben so, dass ich sicher sein kann, dass die Daten wirklich geschrieben sind...


lg
  Mit Zitat antworten Zitat
Benutzerbild von Die Muhkuh
Die Muhkuh

Registriert seit: 21. Aug 2003
7.332 Beiträge
 
Delphi 2009 Professional
 
#12

Re: TFileStream Problem - Datei bereits geöffnet ?

  Alt 28. Mai 2008, 19:49
Hi,

Du könntest eine bool'sche Variable setzen, wenn die Datei offen ist. Wenn diese dann true ist, schreibst Du einfach nicht.

Warum müssen die Daten eig. pro Minute ein paar mal geschrieben werden?
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#13

Re: TFileStream Problem - Datei bereits geöffnet ?

  Alt 28. Mai 2008, 19:49
Hi,

Probierst mal nur mit fmCreate ohne fmOpenWrite. Das müsste funktionieren... Und geschrieben werden die Daten spätestens wenn du Free aufrufst.

Gruß
Neutral General
Michael
  Mit Zitat antworten Zitat
slemke76

Registriert seit: 29. Mär 2005
Ort: Quakenbrück
146 Beiträge
 
#14

Re: TFileStream Problem - Datei bereits geöffnet ?

  Alt 28. Mai 2008, 20:22
Hi,

@Neutral General:
Habe ich probiert; gleiches Problem :
Stream := TFileStream.Create(XMLFile, fmCreate);
Somit dürfte auch die vorgeschlagene Fallunterscheidung nicht gehen....

@Die Muhkuh:
Wenn ich eine Boolsche Variable setze, habe ich so nichts davon; vom Ablauf her ist sicher gestellt, dass es keine Überlappungen gibt - der Timer, der die Funktion aufruft ist bis nach abarbeitung auf false und wird erst dann wieder gestartet.

Test mit IsFileInUse läuft, aber wie gesagt, das wäre ja nur ein "umgehen".

lg
Sebastian
  Mit Zitat antworten Zitat
Benutzerbild von littleDave
littleDave

Registriert seit: 27. Apr 2006
Ort: München
556 Beiträge
 
Delphi 7 Professional
 
#15

Re: TFileStream Problem - Datei bereits geöffnet ?

  Alt 28. Mai 2008, 20:30
Zitat von slemke76:
[...] Die Datei muss jedes mal neu erstellt werden [...]
Wie schauts den damit aus? Hast du schon geschaut, ob DeleteFile nicht manchmal fehl schlägt und warum? Ich glaub, dass wäre noch eine sinnvolle Stelle, an der du suchen kannst.
Jabber: littleDave@jabber.org
in case of 1 is 0 do external raise while in public class of object array else repeat until 1 is 0
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#16

Re: TFileStream Problem - Datei bereits geöffnet ?

  Alt 28. Mai 2008, 20:30
Zitat von slemke76:
@Die Muhkuh:
Wenn ich eine Boolsche Variable setze, habe ich so nichts davon; vom Ablauf her ist sicher gestellt, dass es keine Überlappungen gibt - der Timer, der die Funktion aufruft ist bis nach abarbeitung auf false und wird erst dann wieder gestartet.
Aber genau dies scheint trotzdem das Problem zu sein, denn anders lässt sich der Fehler nicht erklären. Somit: probier dies mal mit der boolschen Variablen aus.
  Mit Zitat antworten Zitat
slemke76

Registriert seit: 29. Mär 2005
Ort: Quakenbrück
146 Beiträge
 
#17

Re: TFileStream Problem - Datei bereits geöffnet ?

  Alt 28. Mai 2008, 20:31
Nochmal ich

Das Problem ist im übrigen nicht neu:
http://groups.google.com/group/de.co...73bc0?lnk=raot

Ich habe ausserdem gelesen, das TStream von Delphi gepuffert ist.

Ich werde es jetzt auch nochmal mit
FlushFileBuffers(Stream.Handle) probieren.

lg
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#18

Re: TFileStream Problem - Datei bereits geöffnet ?

  Alt 28. Mai 2008, 20:32
Hi,

Ansonsten versuch es mal mit meinem TFileStreamEx aus meiner MappedStreams.pas *Werbung mach*

In den nächsten Tagen wird allerdings eine neue Version hochgeladen.

Gruß
Neutral General
Michael
  Mit Zitat antworten Zitat
slemke76

Registriert seit: 29. Mär 2005
Ort: Quakenbrück
146 Beiträge
 
#19

Re: TFileStream Problem - Datei bereits geöffnet ?

  Alt 28. Mai 2008, 20:38
Hi,

@Neutral General:
bin ich vor 5 Minuten beim Googlen drauf gestossen. Das werde ich als letztes Ass im Ärmel behalten (als vorletztes - das letze wäre, das ganze mal mit fopen zu probieren ).

@all:
Ich habe zum testen die Boolsche Variable jetzt mal gesetzt:

Delphi-Quellcode:
if (MainForm.testbool) then ShowMessage('FEHLER!');
MainForm.testbool:=true;
    Stream := TFileStream.Create(MainForm.AppDataDirConfig + '\MicoData.xml', fmCreate);
    DomToXmlParser1.WriteToStream(FDoc, 'UTF-8', Stream);
    FlushFileBuffers(Stream.Handle);
    Stream.Free;
MainForm.testbool:=false;
lg
  Mit Zitat antworten Zitat
slemke76

Registriert seit: 29. Mär 2005
Ort: Quakenbrück
146 Beiträge
 
#20

Re: TFileStream - Datei bereits geöffnet ?

  Alt 29. Mai 2008, 07:58
Guten Morgen,

@Muetze1: Das Programm ist wieder abgestürzt und das "ShowMessage('FEHLER')" ist nicht ausgelöst worden; ausserdem habe ich nochmals alle Stellen des Sources geprüft; die Datei wird nur an der einen Stelle aufgemacht/geschrieben.

Es scheint also ein Problem von TFileStream zu sein...

Für heute morgen habe ich erstmal ein "if IsFileInUse" eingesetzt; zu mehr ist heute keine Zeit

lg
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


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 11:12 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