Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Problem mit dem abspeichern in einer Ini (https://www.delphipraxis.net/11614-problem-mit-dem-abspeichern-einer-ini.html)

citybreaker 10. Nov 2003 17:21


Problem mit dem abspeichern in einer Ini
 
Hallo,
bei folgendem Code abschnitt wird immer nur der Name
gespeichert, obowhl eigentlich beides gespeichert werden soll.


Delphi-Quellcode:
  // Speichern
  Ini:=TIniFile.Create(ExtractFilePath(application.Exename)+'data.ini');
  Ini.WriteString('Optionen', 'Name', Spiel.Edit2.Text);
  Ini.WriteString('Optionen', 'Punkte', Spiel.Highscore.Text);
  Ini.Free;

Matze 10. Nov 2003 17:23

Re: Problem mit dem abspeichern in einer Ini
 
Delphi-Quellcode:
Ini.SaveToFile('...\...ini');
Sorry, hab was verwechselt. :wall:

Matze 10. Nov 2003 17:28

Re: Problem mit dem abspeichern in einer Ini
 
Du machst schon alles richtig, so wird normalerweise beides gespeichert, ich hab's getestet, bei mir geht's.

Sorry, nochmal für obigen Post. :oops:

citybreaker 10. Nov 2003 17:30

Re: Problem mit dem abspeichern in einer Ini
 
Des ist ja doof, bei allen klappt es wieder nur bei mir nicht,
kann es vielleicht daran liegen wie ich es überprüfe?

Delphi-Quellcode:
(* Punkte = UpDown an einem Edit feld *)
if Punkte.Position > StrToInt(Highscore.Text) then
  // Speichern
  ....

sonic 10. Nov 2003 17:55

Re: Problem mit dem abspeichern in einer Ini
 
Also eigentlich sollte das gehen.

Wenn du dir nicht sicher bist, ob die If Abfrage hinhaut, dann gib sie doch
mal raus?!

Ich arbeite viel mit den Ini Files, weils ne einfache und schnelle Lösung ist,
Configs usw. zu speichern.

Ich verwende sie sogar um kleine Memo-Felder abzuspeichern.

zum Schreiben:
Code:
 c := 0;
   WriteString('Sonstige Infos', 'count', inttostr(sonstiges.Lines.Count));
   while (c<(sonstiges.Lines.Count)) do
   begin
     WriteString('Sonstige Infos', 'sonstiges'+inttostr(c), sonstiges.Lines.Strings[c]);
     c := c + 1;
   end;
zum Lesen:
Code:
 sonstiges.Lines.Clear;
   c := 0;
   max := strtoint(ReadString('Sonstige Infos', 'count', '0'));
   while (c<max) do
   begin
     sonstiges.Lines.Add(ReadString('Sonstige Infos', 'sonstiges'+inttostr(c), ''));
     c := c + 1;
   end;
Mfg Sonic :-D

Alexander 10. Nov 2003 18:02

Re: Problem mit dem abspeichern in einer Ini
 
Probier mal statt:
Delphi-Quellcode:
ExtractFilePath(application.Exename)
das hier:
Delphi-Quellcode:
ExtractFilePath(Paramstr(0))

Matze 10. Nov 2003 18:12

Re: Problem mit dem abspeichern in einer Ini
 
@alex: Wenn seine Ini im Projekt-Ordner ist, dann kann's daran wohl nicht liegen. ;)

citybreaker 10. Nov 2003 18:14

Re: Problem mit dem abspeichern in einer Ini
 
Nuja, die if abfrage muss ja eigentlich klappen,
schließlich wird ja der Name schon gespeichert. :|

@Matze Ist im Programm Ordner.

---->> Edit <<----
Dies ist mein Dreihunderster beitrag! *froi* :dance:

MrKnogge 10. Nov 2003 18:26

Re: Problem mit dem abspeichern in einer Ini
 
schreib das ganze mal in try-finally block rein !

Delphi-Quellcode:
try
 Ini.create....
 Ini.write...
finally
 Ini.free;
gruss

Luckie 10. Nov 2003 18:32

Re: Problem mit dem abspeichern in einer Ini
 
Zeig mal alles. Also auch den kompleztten if-Block drumrum, so hat das keinen Sinn.

Wormid 10. Nov 2003 19:01

Re: Problem mit dem abspeichern in einer Ini
 
Hast Du die Ini mal mit einem Texteditor geöffnet? Stehen die Werte da auch wirklich nicht drin?

Nicht das das speichern funktioniert, aber das einlesen nicht... :mrgreen:


Gruß

Wormid

scp 10. Nov 2003 19:08

Re: Problem mit dem abspeichern in einer Ini
 
Zitat:

Zitat von MrKnogge
schreib das ganze mal in try-finally block rein !

Delphi-Quellcode:
try
 Ini.create....
 Ini.write...
finally
 Ini.free;
gruss

Stimmt, create allerdings ausserhalb:

Delphi-Quellcode:
Ini := TIniFile.create....
try
 Ini.write...
finally
 Ini.free;
end;
[edit]Immer diese Flücktigkeitsfehler :-)[/edit]

citybreaker 10. Nov 2003 19:31

Re: Problem mit dem abspeichern in einer Ini
 
Zitat:

Nicht das das speichern funktioniert, aber das einlesen nicht...
Funny! :-D

In der Ini File steht:

Code:
[Optionen]
Name=Citybreaker
Punkte=5
Die If Abfrage sieht folgendermaßen aus!
Delphi-Quellcode:
  begin
    Dead;
    Spiel.Power.Progress := Spiel.Power.Progress-10;
    if Spiel.Power.Progress = 0 then
    begin
      Player.Dead;
      Spiel.Timer.Enabled := false;
      Spiel.Draw.Visible := false;
      Spiel.GameOver.Visible := true;
      if Spiel.Punkte.Position > StrToInt(Spiel.Highscore.Text) then
      begin
        Spiel.Label3.Visible := true;
        Spiel.Edit2.Visible := true;
        Spiel.Button1.Visible := true;
      end;
    end;
  end;

Es wird ein Editfeld für den Namen und ein Button zum bestätigen sichtbar!
Wenn man auf den Button klickt. Soll der Name gespeichert werden!

Delphi-Quellcode:
var Ini: TInifile;
begin
  // Speichern
  Ini:=TIniFile.Create(ExtractFilePath(application.Exename)+'data.dat');
  Ini.WriteString('Optionen', 'Name', Spiel.Edit2.Text);
  Ini.WriteString('Optionen', 'Punkte', Spiel.Highscore.Text);
  Ini.Free;
  // Ende
  Spiel.Close;

sonic 10. Nov 2003 19:44

Re: Problem mit dem abspeichern in einer Ini
 
Also ehrlich bin ich zu blöd?

Du hast doch eh alles drin in deiner Ini Datei!
[Optionen]
Name=Citybreaker
Punkte=5

Optionen steht nicht zweimal da, weils ja die selbe Gruppe ist.

Oder willst du vielleicht mehrere namen mit zugehörigen Punkten speichern?

Da müsstest du dann nämlich genau sowas machen wie ich dir vorher geschrieben habe...

Zum Schreiben...
Code:
   // Sonstiges

var Name, Punkte  : String;
  Name := 'Hallo';
  Punkte := '0';
   
   c := strtoint(ReadString('Allgemein', 'count', '0'));
   WriteString('Allgemein', 'count', inttostr(c+1));
 
     WriteString('Name', inttostr(c), Name);
     WriteString('Punkte', inttostr(c), Punkte);



Zum Lesen...
Code:
 
   c := 0;
   max := strtoint(ReadString('Allgemein', 'count', '0'));
   while (c<max) do
   begin
     Liste.Lines.Add(ReadString('Name', inttostr(c), '') + ':' +
                         ReadString('Punkte', inttostr(c), '')
     );
     c := c + 1;
   end;
Mfg Sonic :-D

citybreaker 10. Nov 2003 19:52

Re: Problem mit dem abspeichern in einer Ini
 
Ne, soll immer nur der höchste Score mit Namen gespeichert werden. :|


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:57 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz