Einzelnen Beitrag anzeigen

Benutzerbild von Glocke89
Glocke89

Registriert seit: 2. Mär 2007
Ort: Thüringen
80 Beiträge
 
Lazarus
 
#9

Re: verschiedene Datentypen in eine Datei abspeichern

  Alt 6. Mär 2007, 19:52
Zitat von Nils_13:
Was für eine Delphi-Version hast du ? Ab 6/7 gibt es eine Unit IniFiles, welche du nur in die Uses-Klausel aufnehmen musst.
Ich hab Delphi 7

Naja, das mit dem INI-File habe ich vorhins mit dem Tutorial hinbekommen

Der Quellcode sieht so aus
Delphi-Quellcode:
{ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                            Spielstand speichern
  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ }

procedure Spielstand_speichern(wer:integer);
var ini:TIniFile;
    i,j:integer;
begin
  ini:=TIniFile.Create(ExtractFilePath(ParamStr(-1))+pfad);
  with ini do
    begin
      //Spielername
      WriteString('Spieler '+IntToStr(wer),'Name',Game.Spieler[wer]);
      //Gebäudestufen
      for i:=Metallmine to Forschungslabor do
        WriteInteger('Gebäudestufen ('+IntToStr(wer)+')',IntToStr(i),Game.Gebaeude[i,wer]);
      //Forschungsstufe
      for i:=Waffentechnik to Energietechnik do
        WriteInteger('Forschungsstufen ('+IntToStr(wer)+')',IntToStr(i),Game.Forschungsstufen[i,wer]);
      //Verteidigungen
      for i:=Lasergeschuetz to Schildgenerator do
        WriteInteger('Verteidigungsanlagen ('+IntToStr(wer)+')',IntToStr(i),Game.Verteidigung[i,wer]);
      //Schiffe auf Wegpunkten
      for i:=Transporter to Zerstoerer do
        for j:=1 to 12 do
          WriteInteger('Flotten auf Wegpunkt '+IntToStr(j)+' ('+IntToStr(wer)+')',IntToStr(i),Game.Flotten[i,j,wer,bewegbar]);
      //Rohstoffe auf Wegpunkten
      for j:=1 to 12 do
        begin
          WriteInteger('Rohstoffe auf Wegpunkt '+IntToStr(j),'Metall',Game.Rohstoffe[j].metall);
          WriteInteger('Rohstoffe auf Wegpunkt '+IntToStr(j),'Silicium',Game.Rohstoffe[j].silicium);
          WriteInteger('Rohstoffe auf Wegpunkt '+IntToStr(j),'Wasserstoff',Game.Rohstoffe[j].wasserstoff);
        end;
      free
    end;
end;

{ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                            Spielstand laden
  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ }

procedure Spielstand_laden;
var ini:TIniFile;
    i,j,k,x:integer;
begin
  ini:=TIniFile.Create(ExtractFilePath(ParamStr(0))+pfad);
  with ini do
     try
      for k:=1 to 3 do //Spieler
        begin
          //Spielernamen
          ReadString('Spieler '+IntToStr(k),'Name',Game.Spieler[k]);
          //Gebäudestufen
          for i:=Metallmine to Forschungslabor do
            ReadInteger('Gebäudestaufen ('+IntToStr(k)+')',IntToStr(k),Game.Gebaeude[i,k]);
          //Forschungsstufe
          for i:=Waffentechnik to Energietechnik do
            ReadInteger('Forschungsstufen ('+IntToStr(k)+')',IntToStr(k),Game.Forschungsstufen[i,k]);
          //Verteidigungen
          for i:=Lasergeschuetz to Schildgenerator do
            ReadInteger('Verteidigungsanlagen ('+IntToStr(k)+')',IntToStr(k),Game.Verteidigung[i,k]);
          //Schiffe auf Wegpunkten
          for i:=Transporter to Zerstoerer do
            for j:=1 to 12 do
              ReadInteger('Flotten auf Wegpunkt '+IntToStr(j)+' ('+IntToStr(k)+')',IntToStr(k),Game.Flotten[i,k,j,bewegbar]);
        end;
          //Rohstoffe auf Wegpunkten
          for j:=1 to 12 do
            begin
              ReadInteger('Rohstoffe auf Wegpunkt '+IntToStr(j),'Metall',Game.Rohstoffe[j].metall);
              ReadInteger('Rohstoffe auf Wegpunkt '+IntToStr(j),'Silicium',Game.Rohstoffe[j].silicium);
              ReadInteger('Rohstoffe auf Wegpunkt '+IntToStr(j),'Wasserstoff',Game.Rohstoffe[j].wasserstoff);
            end;
    finally
      free
    end;
end;
Es schein zu funktionieren Wenn das Spiel im Ganzen funktioniert stellen wir es evtl. hier online

So, tHx für eure Hilfe (moralische Unterstützung pur )
Christian
  Mit Zitat antworten Zitat