Strings "speichern"

D

Drathensore

el hokka Leute,

Ich habe folgende Probleme welche es zu bewälltigen gilt:

1.) Ich möchte die "Ergebnisse" (Strings) nach möglichkeit in der *.exe selbst abspeichern und sie bei wieder aufrufen des Programmes wieder einlesen (vgl. Highscorelisten bei Spielen, wo die Idee anlehnt.) Ich habe nicht die geringste Ahnung wie ich damit beginnen soll, oder ob dies machbar ist.

1.1.) Sollte es nicht machbar sein, ist es möglich die "Ergebnisse" in der *.exe in einer externen datei im *.txt zu speichern? Wie?

2.) folgendes Szenario:

Programm hat die (ich will sie der Einfachheit halber mal so nennen) Highscoreliste, die erste überhaupt... und speichert diese dann ab unter "x:\Programm\*.txt" ab...

Ich hätte jetzt z.B. gerne statt einer *.txt eine *.dat, jedoch mit den selben Informationen, soll heissen: Ist VB .NET dazu in der lage dies zu bewerkstelligen? Wenn ja, wie?

3.) Wenn ich eine Datei habe (*.txt, oder meinem Beispielwunsch nach *.dat) wie lese ich diese Informationen wieder ein?


Ich möchte euch schonmal im vorraus für die Hilfe und Mühe die Ihr macht danken, in jeder nur erkenntlichen Form.

Mit freundlichen Gruessen


Drathensore
 
In der Anwendung selbst speichern ist möglich, allerdings würde ich dies bei deinen Programmierkenntnissen nicht empfehlen, ich erklärs aber trotzdem mal:

Die Datei könnte in einer von deiner Anwendunge geladenen Assembly (zB DLL) als eingebettete Ressource vorhanden sein. Willst du dort jedoch Änderungen machen, muss die Datei eingelsen werden (Reflection), dann muss die Assembly entladen werden. Die Datei kann nun neu erstellt werden. Danach muss die Assembly neu kompiliert und geladen werden. Dies ist automatisiert möglich, jedoch für einen Anfänger doch eher als schwierig einzustufen.

Zu den anderen Möglichkeiten:

Im Namespace System.IO befinden sich zahlreiche Reader und Writer (zb. StreamReader und StreamWriter), diese können zum Schreiben und Lesen von Daten verwendet werden. Die Endung ist dabei recht egal. Dies hängt lediglich davon ab, wie du den Filenamen angibst.

Ich würde dir also raten, in der MSDN oder deiner Visual Studio-Hilfe mal den System.IO-Namespace zu durchstöbern und dir mal StreamReader, TextReader etc. anzugucken. Da gibt es auch immer nette Beíspiele dazu, die dir zeigen, wie du etwas machen kannst.
 
Ich würde dir aus verschieden Gründen nicht raten Deine Daten in der Exe zu speichern. Wenn etwas schief geht, ist Dein Programm nicht mehr ausführbar.
Zudem bilden einige Personal Firewalls auch Hashwerte von ausführbaren Dateien, dieser würde sich mit jeder Änderung die Firewall beschweren. Solange die nicht auf das Netzwerk zugreifst ist, sollte aber unproblematisch sein.

Wenn Du String speichern möchtest könntest du auch eine XML Datei verwenden, die braucht ja nicht die Endung XML verwenden. Für das Laden und Speichern in XML gibt es viele Hilfe im Internet.
Um deine Datei vor Veränderung zu schützen müsstest Du, natürlich noch verschiedene Sicherheitsvorkehrungen treffen.
 
Ini dem von mir geschilderten Beispiel (erste Variante) liegen die Daten in einer DLL, die oft von Firewalls nicht gecheckt werden (hängt in manchen Fällen auch von den Einstellungen ab).

Geht bei der Kompilierung des Assemblies etwas schief, bleibt die ursprüngliche Applikation ja lauffähig, jedoch können die Daten nicht mehr geladen werden, sprich die Assembly muss eventuell neu kompiliert werden (Fehlerabfrage).

Beim vorhandenen Level des Programmierers (und vor allem auch durch die mögliche händische Änderung - was ja nicht unbedingt ein Nachteil sein muss) würde ich auch ein XML-File bevorzugen ... eine weitere Variante wäre natürlich auch das Einbinden einer Applikations-Config-Datei (Neue Datei hinzufügen - Dialog) - wobei dies auch eine XML-Datei istm jedoch der saubere Weg.
 
Zurück