Announcement

Collapse
No announcement yet.

Lock-Dateien

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Lock-Dateien

    Hallo Allerseits!<br>
    Folgendes Problem:<br>
    Ich habe unter Delphi5 eine Connection zu Oracle (Nativ Treiber). Die EXE habe ich auf dem Server liegen. Wenn nun ein User das Programm öffnet werden im Programmverzeichnis 3 Dateien erzeugt.<br>
    Paradox.lck
    Pdoxusrs.lck
    Del1.MB

    Dadurch kann kein anderer User auf die gleiche EXE zugreifen.
    Das finde ich ziemlich komisch, da keine Paradox-Datenbank eingebunden ist.

    Ich habe im gesamtem Projekt keine 'Cached Updates' verwendet, aber trotzdem probiert im Alias 'Schema Cache Dir' auf ein lokales Verzeichnis zu setzen.

    Es wäre Super, wenn jemand dafür eine Lösung hätte.

    Dank im Voraus<br>
    Walter

  • #2
    Hallo,

    Die BDE benutzt für temporäre Dateien generell das Paradox-Format und legt diese im Private Verzeichnis der Session ab.

    Das Default-Verzeichnis einer Session ist bei Delphi das Programmverzeichnis, in dem die EXE liegt. Um dies zu Umgehen, mußt Du die Eigenschaft PrivateDir deiner Session auf ein lokales bzw. benutzerspezifisches Verzeichnis setzen.

    Ich benutze für so etwas immer die TSession-Komponente. Ob man die Eigenschaft auch für die Default-Session setzen kann, habe ich noch nicht probiert.

    Gruß Ka

    Comment


    • #3
      Hallo!

      Ich habe das jetzt mit der Session-Komponente probiert.
      Es funktioniert zwar, dass die Lock-Dateien auf ein anderes Verzeichnis gelegt werden aber wenn das Programm abstürzt werden die Dateien nicht mehr gelöscht.

      Kann man diese lästigen Dateien nicht überhaupt abschalten? Wie ich das sehe werden diese Files sowieso nicht gebraucht!

      In unserer Firma werden NUR Exe-Files auf einem Netzlaufwerk abgelegt.
      Da kann es passieren, dass mehrere Programme ihre Lock-Dateien auf dem gleichen Verzeichnis ablegen- und sich dadurch gegenseitig stören.

      Vielleicht weiss jemand Rat

      mfg

      Walte

      Comment


      • #4
        Hallo,

        bei diesen Dateien handelt es sich nicht um "Lock-Dateien", sondern um In-Memory-Tabellen, die ab einer bestimmten Grösse als Datei auf die Platte ausgelagert werden. Wenn in der Anwendung niemals <i>Cached Updates</i> bzw. <i>lebende Datenmengen</i> (RequestLive) verwendet werden, scheint mindestens eine der SELECT-Abfrage über TQuery eine lokale Datenmenge aufzubauen. Solange die TQuery-Eigenschaft <b>UniDirectional</b> nicht auf TRUE steht, muss die BDE die Daten lokal zwischenpuffern. Zitat aus der Delphi-Hilfe: "<i>Ursprünglich kann ein SQL-Cursor in einer Datenmenge nur vorwärts bewegt werden. Durch die Zwischenspeicherung von Datensätzen ist in der BDE auch die Verschiebung in der anderen Richtung möglich. Muß der Cursor in einer Ergebnismenge nicht in beide Richtungen bewegt werden, setzen Sie UniDirectional auf True. In diesem Fall ist für eine Anwendung weniger Speicher erforderlich, und die Leistung wird verbessert.</i>".

        Da eine Datenbankanwendung in der Regel alle Datenquellen erst beim Start in eigener Regie öffnen sollte (also in der IDE vor dem Compilieren schliessen), kann beim Start das eigene <b>TSession.PrivateDir</b> über API-Funktionen (z.Bsp. ShFileOperation) "leergeräumt" werden. Somit sind die "Leichen" nicht permanent vorhanden.

        P.S: Warum schmiert die Anwendung überhaupt ab? Wenn in der Exception-Behandlung alle Datenquellen geschlossen werden, räumt auch die BDE ordentlich auf

        Comment

        Working...
        X