Datei speichern/einlesen mit antiveränderung

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Rubiko
Beiträge: 943
Registriert: 25.02.2005 19:43
Computerausstattung: Intel i7 2600k
8GB Ram
GeForce GTX 560 Ti
Wohnort: Schwabach

Datei speichern/einlesen mit antiveränderung

Beitrag von Rubiko »

ok...
wieder ein einfaches beispiel:
die dos konsole fragt nach dem namen:
wenn er eingegeben wird wird im ordner der exe ein ordner mit "chars" erstellt und im ordner eine txt datei "(name)"
müsste so aussehen

Code: Alles auswählen

<...>
name$ = Input()
PrintN("  Hmm... du heisst also "+name$+" !")
CreateDirectory("chars")
CreateFile(#PB_Any,"chars\"+name$".aloah")
so wird erstmal die txt datei geschrieben : (wenn fehler drin sind bitte nicht beachten es geht ja bei mir und das problem isses net :D)
jetzt sollen aber die daten des helden eingetragen werden

Code: Alles auswählen

WriteStringN("L "+Level$"")
1. problem! : das level wird nicht eingetragen!
2. problem : wenn ichs dann raus hab... wie mach ich da ne "antiveränderung" rein <- mir is kein besseres wort eingefallen xD
also ich meine... der user kann ja einfach mit notepad die datei öffnen und beliebig verändern... ich will das die textdatei geschützt ist... oder einfach andre buchstaben und zahlen verwendet werden

dann will ich mit readfile die datei einlesen,
am anfang des codes sollte sich "wenn" der user mit ' j ' auf die frage :
hast du schon einen charakter? antwortet
sowas öffnen wo man eben die txt auswählen kann

puh, hóffe ihr habts verstanden

Rubiko
Ich wollte die Welt verändern, doch Gott gab mir nicht den Quelltext.
Benutzeravatar
zigapeda
Beiträge: 1753
Registriert: 06.03.2005 17:22
Wohnort: Kaufbeuren
Kontaktdaten:

Beitrag von zigapeda »

Mal eine frage: Warum benutzt du die eingabeaufforderung bzw. console?
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

> 1. problem! : das level wird nicht eingetragen!

da ist ein syntaxfehler drin:

Code: Alles auswählen

WriteStringN("L "+Level$"")
die zweiten leeren anführungszeichen gehen so nicht.

Code: Alles auswählen

WriteStringN("L "+Level$+"")
ginge, ist aber unnötig,

Code: Alles auswählen

WriteStringN("L "+Level$)
tut das gleiche.

hast du deinen Debugger nicht eingeschaltet?

2.

um die daten vor veränderung zu schützen, gibts verschiedene möglichkeiten...

- die dateinamenerweiterung nicht .txt nennen, sondern irgendwie anders,
du kannst trotzdem ReadString() machen.
aber du bindest dem benutzer nicht auf die nase, das textdaten drin sind.

- mit schreibschutz setzen/löschen müsste auch einiges gehen,
hab ich aber noch nicht mit rumprobiert...

- am einfachsten finde ich:
die charakter-daten in einer struktur erfassen, und den inhalt der struktur einfach
direkt in eine datei schreiben...

bei z.b. Level 33 steht dann in der datei nicht "L 33" sondern einfach "!".
was es bedeutet weisst du daher, an welcher stelle es steht...

ich erklär dir das gern noch genauer, wenn das jetzt zu allgemein war ;)

@zigapeda
> Mal eine frage: Warum benutzt du die eingabeaufforderung bzw. console?

ich finde es nicht schlecht, sich erstmal auf das dateiproblem zu konzentrieren,
und ne easy-oberfläche zu benutzen..

wenn das speichern funktioniert, kann man immernoch nen aufwendigen GUI proggen...
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
zigapeda
Beiträge: 1753
Registriert: 06.03.2005 17:22
Wohnort: Kaufbeuren
Kontaktdaten:

Beitrag von zigapeda »

Ich finde es gleich schwer deshalb programmiere ich auch immer mit einer GUI. Kommt drauf an für welche Anwendung er es benötigt wenn er ein Spiel coden will ist eine Console gut aber für ein Fensterprogramm würde ich keine Console verwenden. mit Spiel habe ich übrigens ein Vollbildschirmspiel gemeint wie z.B. ein 3d spiel.
Benutzeravatar
Rubiko
Beiträge: 943
Registriert: 25.02.2005 19:43
Computerausstattung: Intel i7 2600k
8GB Ram
GeForce GTX 560 Ti
Wohnort: Schwabach

Beitrag von Rubiko »

achja wenn ich andren dateinamen nehme würden schlaue user trotzdem den file mit notepad oder andren editor öffnen...



noch genauer warum es console ist: mir ist langweilig deswegen häng ich an nen textadventure...
Ich wollte die Welt verändern, doch Gott gab mir nicht den Quelltext.
Antworten