Das ist eigentlich kein Problem; du muss nur angeben, dass die zentrale Datei von allen Prozessen zum Lesen und zum Schreiben geöffnet werden darf:
Delphi-Quellcode:
var
fs : TFileStream;
begin
fs := TFileStream.Create('N:\userlist.dat', fmOpenReadWrite or {alle dürfen lesen/schreiben}fmShareDenyNone);
try
finally
fs.Free;
end;
end;
Das Problem ist jetzt, dass mehrere Prozess gleichzeitig die Datei verändern können.
Du brauchst innerhalb der Datei eine Struktur, die verhindert das Prozess B das überschreibt was Prozess A gerade reingeschrieben hat.
Es gibt auch noch einen zweiten, sicheren Weg.
Hierbei darf immer nur ein Prozess auf die Datei zugreifen.
fs := TFileStream.Create('N:\userlist.dat', fmOpenReadWrite or fmShareExclusive);
Das Prinzip geht so:
ein Prozess öffnet die Datei exklusiv, liest den ganzen Inhalt und schreibt seinen Score und schliesst die Datei wieder.
Zwischen Öffnen und Schliesen sollte möglichst wenig Zeit vergehen.
Wenn eine Datei schon in Bearbeitung ist kann ein weiterer Prozess diese solange nicht öffnen.
Mit einem Timer versucht man es einfach mehrfach, bis man Erfolg hat.
Erfahrungswerte: das Prinip der exklusiv gesperrten Datei funktioniert gut auch bei 50 Rechner.
Bei voller Netzwerkauslastung kann ein Prozess aber auch schon mal 2 Sekunden blockiert sein, weil die Datei ständig von anderen Prozess geöffnet ist.