Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Beste Möglichkeit für Datenaustausch für ein Programm (https://www.delphipraxis.net/131189-beste-moeglichkeit-fuer-datenaustausch-fuer-ein-programm.html)

jaenicke 20. Mär 2009 11:51

Re: Beste Möglichkeit für Datenaustausch für ein Programm
 
Zitat:

Zitat von cyanroot
Momemt mal, aber das Prinzip habe ich ja jetzt auch. Die Daten werden in eine Memo geladen, jemand verändert den Inhalt und speichert. Dabei werden die Lines der Memo in eine notes.txt abgespeichert. Was sollte denn daran nicht gehen?

So funktioniert das allerdings gar nicht...

Überleg mal: Eine Instanz des Programms lädt den Inhalt. Kurz danach lädt eine andere diesen ebenfalls. Jetzt wird in beiden Instanzen der Inhalt verändert.
Jetzt speichert eine der beiden Instanzen die Datei. Aber was passiert, wenn jetzt die zweite Instanz speichert?
Die Änderungen der ersten Instanz sind dann weg, denn die Datei wurde ja zum Ändern geladen bevor die erste Instanz ihre Änderungen gespeichert hat...

Die wirklich einzige Möglichkeit sowas überhaupt so zu machen wäre, wenn die Datei direkt zum Schreiben geöffnet, sofort geändert und sofort wieder geschlossen wird.

cyanroot 20. Mär 2009 13:25

Re: Beste Möglichkeit für Datenaustausch für ein Programm
 
Die Änderung wird aber sofort in die Datei gespeichert und neu in alle Instanzen geladen. So müsste es doch gehen?

jaenicke 20. Mär 2009 14:06

Re: Beste Möglichkeit für Datenaustausch für ein Programm
 
Das neu laden ist der Punkt: Woher wollen die anderen Instanzen das wissen? Eine Benachrichtigung über Änderungen gibt es im Netzwerk nicht, das funktioniert nur lokal.
Zudem gehen dann die gerade bearbeiteten Änderungen der anderen Instanzen verloren, die in dem Memo gerade getippt stehen, wenn du das Memo mit einer Änderung überschreibst.

Wie gesagt: Für deine persönlichen Zwecke mag es so ausreichen, aber es gibt einige schwerwiegende Probleme. Für eine Veröffentlichung oder die Verwendung in einer Firma wäre dieses Vorgehen inakzeptabel.

cyanroot 20. Mär 2009 14:37

Re: Beste Möglichkeit für Datenaustausch für ein Programm
 
Also die Programm-exe liegt bei mir aufm Server (auch die .txt's) und im lokalen Netzwerk greifen ein paar Leute drauf zu, somit leigt die .txt auch zentrail. Geht's so auch nicht? Danke.

jaenicke 20. Mär 2009 14:49

Re: Beste Möglichkeit für Datenaustausch für ein Programm
 
Genau darum geht es doch. Ich habe den Ablauf doch erklärt.

Überleg doch einmal selbst was passiert, wenn die einzelnen Teile des Zugriffs parallel ablaufen.

Oder wenn du dir das nicht vorstellen kannst :shock: , dann probiere es eben aus. Es passiert ja genauso, wenn du es lokal mit zwei Instanzen ausprobierst.
Du musst während der Bearbeitung z.B. eine andere Instanz des Programms starten und dort etwas bearbeiten. Jetzt speichere beides und du siehst, dass das schief geht.

shmia 20. Mär 2009 15:53

Re: Beste Möglichkeit für Datenaustausch für ein Programm
 
Man könnte die zentrale Datei exklusive sperren, kurz etwas schreiben und dann wieder schliesen.
http://www.delphipraxis.net/internal...ct.php?t=62072
Diese Technik funktioniert zuverlässig auch bei vielen Arbeitsstationen wenn die Schreib- und Leseaktionen kurz und relativ selten sind.
Der Fileserver selbst stellt dann den Mutex dar.


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:59 Uhr.
Seite 2 von 2     12   

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