AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Zugriff mehrerer User auf eine Datei

Zugriff mehrerer User auf eine Datei

Ein Thema von Jean · begonnen am 6. Jul 2013 · letzter Beitrag vom 8. Jul 2013
Antwort Antwort
Seite 2 von 2     12
Benutzerbild von sx2008
sx2008

Registriert seit: 16. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#11

AW: Zugriff mehrerer User auf eine Datei

  Alt 7. Jul 2013, 19:46
Also ich würde wenn es nur um zentrale Highscores geht die Sache mit einer exklusiv gelockten Datei erledigen.
Hier mal Stichpunktartig der Ablauf:

Eingabeparameter:
* Dateiname
* Highscorename
* scorewert (-1 bedeutet: Highscore nicht schreiben)
Ausgabe
* Stringliste mit Highscores

Ablauf
1.) Datei exklusiv öffnen
dabei hilft dieser Code http://www.delphipraxis.net/52135-ex...f-dateien.html
2.) Inhalt aus dem Stream in die Stringliste einlesen Liste.ReadFromStream(stream); 3.) Wenn scorewert = -1 dann gehts weiter mit Punkt 8
4.) Zeile mit dem Highscorename suchen und aktualisieren
der Inhalt der Datei könnte z.B. so aussehen
Code:
Gametester|200000
Predator|80500
Fredl|60000
Beginner|5500
Also immer Name|score in einer Zeile
5.) Falls der eigene Name nicht in der Liste enthalten dann neuen Eintrag einfügen
6.) Liste ggf. sortieren
7.) Stream Position auf Anfang setzen und aktualisiert Liste schreiben
8.) Streamobjekt freigeben

Man kann den beschriebenen Auflauf in einer Procedure unterbringen oder (besser) man schreibt eine Klasse dafür.
Nachtrag: man kann die Stringliste auch in ein TMemIniFile kopieren (Methoden SetStrings , GetStrings ) und so den Datenzugriff vereinfachen
fork me on Github

Geändert von sx2008 ( 8. Jul 2013 um 15:26 Uhr) Grund: Punkt 7.) war unvollständig
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#12

AW: Zugriff mehrerer User auf eine Datei

  Alt 8. Jul 2013, 12:29
Bei einer Highscore dürftest du das Problem mit dem "dirty writing" haben, sofern derjenige, der schreibt, auch die Logik ausführt (einsortieren in die Highscore Liste). Dafür muss es einen wechselseitigen Ausschluss geben.
Für soetwas dürfte das Fassade-Pattern angebracht sein - eine Schnittstelle, die das Eintragen übernimmt.
Wie das Facade-Pattern hier jetzt konkret helfen soll ist mir allerdings ein Rätsel.

Das Strategy-Pattern könnte ich mir gut vorstellen, aber nur um die konkrete Implementierung zu verstecken und später sehr leicht eine andere Speichermethode (Datenbank, Webdienst, etc.) einzuführen.

Konkret hilft das aber auch nicht, aber damit würde ich den Ansatz von sx2008 kapseln
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 02:21 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