Prüfen ob Datei existiert wenn nicht neu erstellen

andrax
2024-02-11
2024-07-01
  • andrax

    andrax - 2024-02-11

    Hi,

    ich ich möchte prüfen ob eine Datei existiert.
    Wenn diese nicht existiert, soll eine erstellt werden und dort hinein geschrieben werden.
    Die Datei wird im Programmlauf mehrfach geöffnet und Daten hinein geschrieben.

    Ich will hier die Funktion File.MODE.MAPPENDPLUS benutzen, das funktioniert aber nicht.
    fopen.xDone bleibt false.
    Hier der Code:

            fopen.sFileName:=sFileName;
            fopen.eFileMode:=File.MODE.MAPPENDPLUS; // Neu erstellen und anhängen
            fopen.xExclusive:=TRUE;
            fopen( xExecute:=TRUE);
            IF fopen.xDone THEN
                hFile:=fopen.hFile;
                sStringToWrite:='';
                writeIndex:=0;
                SchrittDatenlog:=60;
            END_IF
    

    Wo liegt mein Fehler?

     
  • andrax

    andrax - 2024-02-12

    Ergänzung:
    Ich habe jetzt

    fopen.xExclusive:=TRUE;
    

    rausgenommen.
    Jetzt funktioniert es.

    Zusatzfrage:
    können 2 Schreibvorgänge in unterschiedliche Dateien parallel ausgeführt werden oder
    ist es besser sie gegeneinander zu verriegeln?

     
  • Hismoon - 2024-06-04

    Nur für die Nachwelt.
    Ja, Ressourcen wie Files sollte man optimalerweise nur aus 1 Task schreiben.
    Typischerweise nimmt man da eine nieder-priore, die sich um solche langsamen File- oder Logging-Geschichten kümmert. Dann gibt es auch keine Synchronisations-Probleme.
    Aus mehreren Tasks das zu tun braucht eben diese Synchronisation. Sonst passieren schlimme Dinge.

     
  • andrax

    andrax - 2024-07-01

    Auch wenn es bissl spät ist, DANKESCHÖN.
    Dann hatte ich mir das richtig gedacht.
    Aus Sicherheitsgründen habe ich die Task gegenseitig verriegelt

     

Log in to post a comment.