Autor Beitrag
Sylvus
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 195



BeitragVerfasst: Mi 09.04.08 13:53 
Hi Leute, folgendes Problem:
Ich hab bei meinem Programm 2 integer Werte. Diese möchte ich, wenn ich das Programm beende speichern um sie beim nächsten Start wieder zu verwenden. Bisher hatte ich das Problem gelöst, indem ich die Werte mit writeln(wert1) writeln(wert2) in eine .txt Datei geschrieben habe um diese dann mit readln... auszulesen. Folgende Probleme:
1. Der Benutzter kann die Werte einfach so ändern (cheaten)!
2. Wenn ich das Programm auf einem anderem Rechner ausführe bekomme ich einen E/A 103 Fehler.
Momentan sieht der Code so aus:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
//in Form1.create
  FAPPath := ExtractFilePath(ParamStr(0));
  if fileexists(opendialog1.FileName) then
  begin
    assignfile(Datei, FAPPath + 'Highscore.txt');
    reset(Datei);
    readln(Datei, HighscoreS);
    readln(Datei, LVLS);
    CloseFile(Datei);
  end;
//andere Funktion
  if fileexists(opendialog1.FileName) then
  begin
    Rewrite(Datei);
    WriteLn(Datei, HighscoreS);
    WriteLn(Datei, LVL.Tag);
    CloseFile(Datei);
  end;


Meine Idee war jetzt folgende:
Eine string Tabelle in meiner .rc Datei anzulegen, um die Werte dort zu speichern und zu bearbeiten. Allerdings weiß ich nicht, ob das wirklich der beste Weg ist.
Außerdem könnten die Werte leicht größer als 1048576, aber ich weiß nicht ob das ein Problem darstellt. Sollte mein vorgeschlagener Weg der beste sein, dann verratet mir doch bitte die Befehle.
Vielen Dank, Grüße Sylvus

//edit
hab grad gesehen, dass mein Thema vielleicht besser in die Rubrik "Dateizugriff" passt, könnte es jemand mal verschieben? (wenn schon keiner antwortet) ;) ;)
Xion
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
EE-Maler
Beiträge: 1952
Erhaltene Danke: 128

Windows XP
Delphi (2005, SmartInspect), SQL, Lua, Java (Eclipse), C++ (Visual Studio 2010, Qt Creator), Python (Blender), Prolog (SWIProlog), Haskell (ghci)
BeitragVerfasst: Do 10.04.08 11:57 
Hi,

wenn du willst, dass dein Beitrag verschoben wird, dann musst du ihn melden (user defined image), weil die Admins können ja nicht alles lesen ;)

zum Problem. Ich würde zum einen die TIniFile verwenden, da gibts auch irgendwo n tolles Tutorial für (aus den 2 werten werden ja sicherlich nochn paar mehr). Für richtig große Datenmengen ist dein Ansatz aber besser.

Dann würde ich die Werte einfach durch eine Verschlüsselungsroutine schicken (da kannst du ganz einfach selbst was machen, ggf. mit Prüfsumme) und das dann speichern => ein normaler Standarduser kann nichts mehr ändern. Man sollte aber den Schlüssel trotzdem nicht als konst. String machen, weil das steht dann im Klartext in der Exe drinnen (so machen: Key:=Key+'a'+'b'+'c'+'d';) Das solte für ein paar wertchen für ein Spiel ausreichen.

//Edit: Das Tutorial

_________________
a broken heart is like a broken window - it'll never heal
In einem gut regierten Land ist Armut eine Schande, in einem schlecht regierten Reichtum. (Konfuzius)


Zuletzt bearbeitet von Xion am Do 10.04.08 12:19, insgesamt 2-mal bearbeitet
Kri
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 118



BeitragVerfasst: Do 10.04.08 12:09 
Hi,

habe erst gestern für mich ein kleines Prog geschrieben, wie Inis funktionieren.
Habe es dir im Anhang hochgeladen.

Viele liebe Grüße
Kri
Einloggen, um Attachments anzusehen!
Blackheart666
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2195

XP
D3Prof, D6Pers.
BeitragVerfasst: Do 10.04.08 12:21 

_________________
Blackheart666
Der Irrsinn ist bei Einzelnen etwas Seltenes, - aber bei Gruppen, Parteien, Völkern, Zeiten die Regel. (Friedrich Nietzsche)