Einzelnen Beitrag anzeigen

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