PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Textdateien erstellen und beeinflussen



Doktor von Stein
14.06.2011, 15:03
Kurz und bündig:
Wie kann ich den Inhalt einer Text Datei beeinflussen, inklusive Zeilenumbrüchen?
Mit dem RGSS-internen File.open bekomme ich das nämlich nicht hin.

MfG Salamie

Cornix
14.06.2011, 16:12
Mit dieser Zeile:

somefile = File.open("DATANAME.txt", "wb")Kannst du die Datei "DATANAME.txt" im Spieleordner erstellen, mit der Angabe "wb" sagst du aus, dass du in die Datei schreiben willst "w == write" und zwar binäreinträge "b == binary".

Über diese Zeile:

somefile.write(sometext)lässt du den String "sometext" in die Datei "somefile" schreiben welche du natürlich vorher über die oben angegebene Zeile hast öffnen müssen.

Einen Zeilenumbruch machst du folgendermaßen:

somefile.write("\r\n")Der String "\r\n" bedeutet nämlich einen Zeilenumbruch, du kannst diesen auch an das Ende eines Textes anhängen, zum Beispiel:

somefile.write(sometext + "\r\n")Am Ende ist es wichtig, dass du die Datei auch wieder schließt:

somefile.closeHier ein kleines Beispiel:
Diese Funktion würde eine Textdatei im Ordner des Spieles erstellen mit Namen "Settings" welche usereigene Menüeinstellungen speichert.


def create_settings_file
file_settings = File.open("Settings.txt", "wb")
file_settings.write("Game Settings\r\n")
file_settings.write("\r\n")
file_settings.write("fullscreen = "+$fullscreen.to_s)
file_settings.close
end
Ich habe das ganze der Übersichtswegen in dieser Form geschrieben, man könnte natürlich auch folgendes tun:


def create_settings_file
file_settings = File.open("Settings.txt", "wb")
file_settings.write("Game Settings\r\n\r\nfullscreen = "+$fullscreen.to_s)
file_settings.close
end
Das Ergebnis wäre das gleiche.

Das Ergebniss würde ungefähr so aussehen:

Game Settings

fullscreen = 1Falls die globale Variable $fullscreen auf 1 gesetzt wäre.

Ich hoffe dies konnte einigermaßen hilfreich sein.

-KD-
14.06.2011, 16:19
Noch drei Anmerkungen:
- Wenn du Textdateien bearbeiten/schreiben/lesen willst, solltest du sie nicht im binary mode öffnen. Also File.open("meine_datei", "w") statt File.open("meine_datei", "wb"). Dann sparst du dir auch das "\r\n" bei Zeilenumbrüchen und kannst ganz normal "\n" als Zeilenumbruch nutzen. Mit puts statt write werden automatisch Zeilenumbrüche gesetzt.
- Textdateien die du liest sollten in UTF-8 kodiert sein. Dateien, die du schreibst, werden automatisch UTF-8 kodiert
- Wenn du die Block-Variante von File verwendest, sparst du dir das file.close und bist auch für eventuelle Fehler abgesichert.

File.open("meine_datei", "w") do |input|
input.puts "Game Settings"
input.puts "fullscreen = 1"
end

Zum Lesen musst du "r" statt "w" verwenden. Willst du gleichzeitig lesend und schreibend auf die Datei zugreifen, verwendest du "r+".

Doktor von Stein
14.06.2011, 17:28
Danke für die schnellen Antworten. :)