AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Speichern auf gemeinsam genutzem Netzwerkspeicher
Thema durchsuchen
Ansicht
Themen-Optionen

Speichern auf gemeinsam genutzem Netzwerkspeicher

Ein Thema von Torley · begonnen am 6. Feb 2008 · letzter Beitrag vom 8. Feb 2008
Antwort Antwort
Seite 1 von 2  1 2      
Torley

Registriert seit: 24. Jan 2008
Ort: Freudenberg
39 Beiträge
 
Delphi 6 Professional
 
#1

Speichern auf gemeinsam genutzem Netzwerkspeicher

  Alt 6. Feb 2008, 15:02
Für die Schule habe ich ein Snake programmiert! Das besitzt unteranderem eine Highscore liste die in einer dat datei gespeichert wird!

in der schule hab ich den speicherort jetzt auf TMP einem Netzlaufwerk umgestellt.
ich als ersteller der datei auf tmp kann die highscore datei ohne probleme mit snake ändern bzw meine highscore hinzufügen. der rest der klasse jedoch bekommt die fehler meldung das die datei T:\...\highschore.dat nicht erstellt werden konnte obwohl sie existiert!

ich denke es liegt an den rechten der einzelnen benutzer!

meine frage:
kann ich delphi irgendwie sagen das alle die datei ändern dürfen und können oder muss ich mich an den schuladministratoren wenden der die datei freigibt?

torley
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#2

Re: Speichern auf gemeinsam genutzem Netzwerkspeicher

  Alt 7. Feb 2008, 07:46
Für sowas sind Admins doch da. Wo kämen wir denn hin, wenn jedes x-beliebige Delphi Programm die Sicherheitsmechanismen von Windows umgehen könnte...

Wend dich doch mal an deinen Lehrer, vielleicht kannst du ja auch einen anderen Pfad nutzen.
  Mit Zitat antworten Zitat
mashutu

Registriert seit: 15. Nov 2007
195 Beiträge
 
#3

Re: Speichern auf gemeinsam genutzem Netzwerkspeicher

  Alt 7. Feb 2008, 08:42
Poste doch mal, wie die Datei geoeffnet wird. Ich hoffe Du machst die Datei nur dann auf, wenn Du sie brauchst und hinterher gleich wieder zu.
utu

if it was hard to write it should be hard to read
  Mit Zitat antworten Zitat
Torley

Registriert seit: 24. Jan 2008
Ort: Freudenberg
39 Beiträge
 
Delphi 6 Professional
 
#4

Re: Speichern auf gemeinsam genutzem Netzwerkspeicher

  Alt 7. Feb 2008, 12:55
Ich nutze ein tutorial von

Zitat:
http://www.delphi-library.de/topic_e...3cad20a9ce8a3a
Delphi-Library.de - ...eine HighScore Funktion realisieren?
Dort wird die datei bei oncreate geladen und bei jedem eintrag gespeichert!

meint ihr es geht wenn ich die datei beim eintragen neu lade?

am anfang muss sie geladen werden damit sie angezeigt werden kann!
  Mit Zitat antworten Zitat
Benutzerbild von RavenIV
RavenIV

Registriert seit: 12. Jan 2005
Ort: Waldshut-Tiengen
2.875 Beiträge
 
Delphi 2007 Enterprise
 
#5

Re: Speichern auf gemeinsam genutzem Netzwerkspeicher

  Alt 7. Feb 2008, 13:36
Zitat von Torley:
Dort wird die datei bei oncreate geladen und bei jedem eintrag gespeichert!

meint ihr es geht wenn ich die datei beim eintragen neu lade?

am anfang muss sie geladen werden damit sie angezeigt werden kann!
Du solltest die Datei nach dem Lesen / Schreiben wieder schliessen, damit die anderen User auch Lesen / Schreiben können.
Sonst ist die Datei gesperrt und keiner kann mehr Speichern.
Klaus E.
Linux - das längste Text-Adventure aller Zeiten...
Wer nie Linux mit dem vi konfiguriert hat, der hat am Leben vorbei geklickt.
  Mit Zitat antworten Zitat
Torley

Registriert seit: 24. Jan 2008
Ort: Freudenberg
39 Beiträge
 
Delphi 6 Professional
 
#6

Re: Speichern auf gemeinsam genutzem Netzwerkspeicher

  Alt 7. Feb 2008, 14:22
wie schließe ich die datei den nach dem lesen und schreiben?
also müsst ich den code so umstellen das beim start die liste nur in die tstringlist gelesen wird und die datei dann wieder für andere freigegeben ist! und wenn dann jemand eine highscore gemacht hat muss ich wieder die datei laden lassen die highscore speichern und die datei anschließend wieder schließen!
läuft das dann?
  Mit Zitat antworten Zitat
Benutzerbild von RavenIV
RavenIV

Registriert seit: 12. Jan 2005
Ort: Waldshut-Tiengen
2.875 Beiträge
 
Delphi 2007 Enterprise
 
#7

Re: Speichern auf gemeinsam genutzem Netzwerkspeicher

  Alt 7. Feb 2008, 14:26
Zitat von Torley:
wie schließe ich die datei den nach dem lesen und schreiben?
xyz.Close;
Zitat von Torley:
also müsst ich den code so umstellen das beim start die liste nur in die tstringlist gelesen wird und die datei dann wieder für andere freigegeben ist! und wenn dann jemand eine highscore gemacht hat muss ich wieder die datei laden lassen die highscore speichern und die datei anschließend wieder schließen!
läuft das dann?
Man kann sich registrieren lassen, sodass man benachrichtigt wird, wenn sich eine Datei ändert.
Dazu gibt es auch Komponenten, die das übernehmen.
Such mal bei torry.net nach DirectoryMonitor oder DirMonitor.

P.S. Zeig doch mal ein Bisschen Code von den Stellen, wo Du die Datei liest und schreibst...
Klaus E.
Linux - das längste Text-Adventure aller Zeiten...
Wer nie Linux mit dem vi konfiguriert hat, der hat am Leben vorbei geklickt.
  Mit Zitat antworten Zitat
Torley

Registriert seit: 24. Jan 2008
Ort: Freudenberg
39 Beiträge
 
Delphi 6 Professional
 
#8

Re: Speichern auf gemeinsam genutzem Netzwerkspeicher

  Alt 7. Feb 2008, 14:47
Das wird bei start ausgeführt! wenn die datei existiert dann wird aus der gelesen wenn nicht wird c: genommen und wenn die nicht existiert wird sie erstellt (beim eintragen);
Delphi-Quellcode:
 
procedure TForm1.FormCreate(Sender: TObject);
//.....
HighScore := TStringList.Create;
if FileExists('T:\snake\highscore.dat')
   then
    begin
     HighScorePfad := ('T:\snake\highscore.dat');
     HighScore.LoadFromFile(HighScorePfad);
     csave:= false;
    end
   else
    if FileExists('C:\Programme\Snake\Highscore4.dat')
     then
      begin
       HighScorePfad := ('C:\Programme\Snake\Highscore4.dat');
       HighScore.LoadFromFile(HighScorePfad);
       csave:= true;
      end
     else
      begin
       HighScore.Add('005 Unknown');
       HighScore.Add('010 Unknown');
       HighScore.Add('015 Unknown');
       Highscorepfad:=('C:\Programme\Snake\Highscore4.dat');
      end;
//.....
das ist die procedure die beim einfürgen zur highscore aufgerufen wird!
Delphi-Quellcode:
procedure TForm1.FuegeZumHighScoreHinzu(Name : String; Score : Integer;
                                       Trennzeichen : Char; Trennzeichenmenge : integer;
                                       ScoreLength : integer);
var i : integer;
    ATrennzeichen : String;
    TempStrList : TStringList;
    AScore : String;
begin
 if HighScore.Count < 2 then Exit;
 // Es müssen mindestens 2 Einträge in der HighScoreliste bereits stehen
 if Trennzeichenmenge < 1 then Exit;
 // Weniger als ein Trennzeichen oder gar negative Trennzeichen sind nicht möglich
 for i := 1 to Trennzeichenmenge do
  begin
   ATrennzeichen := ATrennzeichen + Trennzeichen;
  end;
 // Unser Trenzeichenstring ist fertig
 AScore := intToStr(Score);
 while Length(AScore) <> ScoreLength do
  begin
   AScore := '0' + AScore;
  end;
 // Wir füllen die fehlenden Stellen im Score mit 0 auf. Damit alle Scorewerte in der Tabelle später
 // gleich lang sind. So kommt das Programm beim Sortieren nicht durcheinander, und es sieht besser aus
 TempStrList := TStringList.Create;
 // Wir erstellen eine zweite temporäre Stringlist, in der wir dann sortieren
 try
  for i := 0 to HighScore.Count-1 do
   begin
    TempStrList.add(HighScore[i]);
   end;
  finally
   try
    TempStrList.add(AScore + ATrennzeichen + Name);
    TempStrList.Sort;
    //Sort ist eine sehr praktische Funktion der TStringList die wir benutzen
    HighScore.clear;
   finally
    try
     for i := (TempStrList.Count - 1) downto 0 do
      begin
       HighScore.add(TempStrList[i]);
      end;
      //hier fügen wir in umgekehrter Reihenfolgen die Werte aus der TempStringlist
      //in unsere HighScore Liste
      if csave=true then
       ForceDirectories('C:\Programme\Snake\');
      HighScore.SaveToFile(HighScorePfad); // Speichern nicht vergessen
   finally
    TempStrList.Free;
   end;
  end;
 end;
end;

ich müsste also beim schreiben die datei nochmal einlesen! und wie schieße ich sie beim start wieder?
einfach T:\...\highscore.dat.close ??
  Mit Zitat antworten Zitat
Benutzerbild von RavenIV
RavenIV

Registriert seit: 12. Jan 2005
Ort: Waldshut-Tiengen
2.875 Beiträge
 
Delphi 2007 Enterprise
 
#9

Re: Speichern auf gemeinsam genutzem Netzwerkspeicher

  Alt 7. Feb 2008, 14:58
Also.
LoadFromFile öffnet die Datei, liesst die Daten und schliesst die Datei wieder.
SaveToFile öffnet die Datei, schreibt die Daten und schliesst die Datei wieder.

Somit musst Du Dich um das Öffnen/Schliessen nicht kümmern.

Vor dem Speichern solltest Du die Datei neu einlesen.

P.S.
Siehst Du, damit man Dir weiterhelfen kann, braucht man Sourcecode.
Sonst stochert man im Nebel rum und führt Dich vielleicht auf eine falsche Fährte.
Klaus E.
Linux - das längste Text-Adventure aller Zeiten...
Wer nie Linux mit dem vi konfiguriert hat, der hat am Leben vorbei geklickt.
  Mit Zitat antworten Zitat
Torley

Registriert seit: 24. Jan 2008
Ort: Freudenberg
39 Beiträge
 
Delphi 6 Professional
 
#10

Re: Speichern auf gemeinsam genutzem Netzwerkspeicher

  Alt 7. Feb 2008, 15:25
das heißt das ich sie vor dem ändern nur neu laden muss?

ich kann das jetzt leider nicht ausprobieren weil ich dazu in die schule muss!

das klingt irgendwie so simple das ich das gefühl hab das die in der schule das trotzdem nicht speichern können! naja probieren geht über studieren
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 20:12 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