Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Cranberry

Treue Seele

  • »Cranberry« ist der Autor dieses Themas

Beiträge: 312

Wohnort: Innsbruck, Tirol

  • Private Nachricht senden

1

09.03.2014, 17:42

Textdateien auslesen unter Linux

Ich arbeite gerade an einem Spiel welches ich gleichzeitig für Linux(Ubuntu) und Windows entwickle.
Ich verwende Codeblocks mit GCC bzw. MinGW.
Zur Zeit schreibe ich den Level Generator der aus einer Textdatei und einem Tileset ein Level generiert. Unter Windows klappt alles wunderbar, jedoch unter Linux nicht.

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
std::ifstream openfile(fileName);

    if(openfile.is_open())
    {
      //Level Generierungs Code
    }

    else
    {
        std::cout << "Couldn't open map file " << fileName << std::endl;
        return false;
    }


Auf meinem Windows-Rechner läuft der if-Code, unter Linux springt er jedoch in den else-Code.
Bin vor kurzem erst auf Linux umgestiegen und habe leider fast garkeine Erfahrung mit der Programmierung von Linux-Applikationen gesammelt.
Weiß jemand woran das liegen könnte?

Danke im Voraus,
Cranberry

Sylence

Community-Fossil

Beiträge: 1 663

Beruf: Softwareentwickler

  • Private Nachricht senden

2

09.03.2014, 17:51

Unter Linux sind "Datei.txt" und "datei.txt" zwei verschieden Dateien. Also guck mal nach, ob die Dateinamen auch richtig geschrieben sind.

Cranberry

Treue Seele

  • »Cranberry« ist der Autor dieses Themas

Beiträge: 312

Wohnort: Innsbruck, Tirol

  • Private Nachricht senden

3

09.03.2014, 18:02

Alles korrekt geschrieben.
Könnte es sein, dass man unter Linux keine relativen Pfade angeben kann?
Die Datei liegt nämlich im selben Verzeichnis wie das Projekt unter "Data/Map1.txt" und ist auch so im Code angegeben.

Tankard

Treue Seele

Beiträge: 192

Beruf: Student, Hardware- und Softwareentwicklung als wissenschaftliche Hilfskraft

  • Private Nachricht senden

4

09.03.2014, 18:25

Sind denn in den IDEs die Ausführungspfade gleich gesetzt? Geht es mit "./Data/Map1.txt"? Denk daran dass alle Ordner-/Dateinamen casesensitiv sind.

Cranberry

Treue Seele

  • »Cranberry« ist der Autor dieses Themas

Beiträge: 312

Wohnort: Innsbruck, Tirol

  • Private Nachricht senden

5

09.03.2014, 18:32

Nein, einmal unter Game/Linux und einmal unter Game/Win32, jedoch ändert das nichts da sich der Data Folder in beiden Verzeichnissen befindet.
Nein mit "./" funktioniert es auch nicht. (Soweit ich weiß werden so nur Scripts usw. ausgeführt oder?)
Ich weiß aber es ist genau gleich geschrieben.
Dann werd ich mal weiter recherchieren.

Tankard

Treue Seele

Beiträge: 192

Beruf: Student, Hardware- und Softwareentwicklung als wissenschaftliche Hilfskraft

  • Private Nachricht senden

6

09.03.2014, 18:36

Warum hast du dann denn zweimal den Ordner Data?

. bedeutet nur das Aktuelle Verzeichnis und .. wäre das nächst höhere Verzeichnis.

Anstatt Die Maps in "Game/OS/Data" zu packen würde ich eher "Game/Data" nehmen (sofern du keinen guten Grund hast die Daten für die OSes zu trennen) und dann versuchen mittels "../Data" darauf zuzugreifen.

Warum dein jetziges Vorhaben nicht funktioniert weiß ich allerdings auch gerade nicht.

Cranberry

Treue Seele

  • »Cranberry« ist der Autor dieses Themas

Beiträge: 312

Wohnort: Innsbruck, Tirol

  • Private Nachricht senden

7

09.03.2014, 18:38

Das liegt daran, dass diese Ordner jeweils getrennt gepackt werden sobald, das Spiel fertig ist. So haben Leute die nur die Linux Version wollen nicht auch die Windows Version dazu.

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Cranberry« (09.03.2014, 18:45)


Tobiking

1x Rätselkönig

  • Private Nachricht senden

8

10.03.2014, 01:05

Zugriffsrechte können auch noch ein Problem sein. Da kommt es drauf an wem die Datei gehört, welche Zugriffsrechte sie hat und welcher Benutzer die Datei öffnen will.

9

10.03.2014, 06:44

Beachtest du beim Angeben des Dateipfades, dass Linux und Windows unterschiedliche Zeichen zum Trennen der Ordnernamen verwenden('/' und '\')?

Tankard

Treue Seele

Beiträge: 192

Beruf: Student, Hardware- und Softwareentwicklung als wissenschaftliche Hilfskraft

  • Private Nachricht senden

10

10.03.2014, 18:23

Unter Windows funktioniert u.d.R. auch /.

Werbeanzeige