Ergebnis 1 bis 6 von 6

Thema: C++ ... was zum Geier passiert hier?

  1. #1

    C++ ... was zum Geier passiert hier?

    Hi! Mein Code soll folgendes tun:
    Schauen ob Datei da, wenn ja -> laden


    WARUM ?!?! Das ist doch nur noch lächerlich.

    Edit:
    Gelöst: Kein open() gemacht, aber trotzdem ein close() notwendig, Thema bitte schliessen/löschen/whatever

    Geändert von Corti (10.06.2012 um 18:37 Uhr)

  2. #2
    Zitat Zitat von Corti Beitrag anzeigen
    Gelöst: Kein open() gemacht, aber trotzdem ein close() notwendig, Thema bitte schliessen/löschen/whatever
    Wenn du einen Dateinamen an den Konstruktor übergibst, wird die Datei im Konstruktor automatisch geöffnet, wenn möglich. Genaueres: http://www.cplusplus.com/reference/i...ream/ifstream/

    Aber ich verstehe auch nicht, wieso du die Datei erst schließen musst, damit loadFromFile() die Datei erfolgreich laden kann, da man Dateien gleichzeitig mehrmals geöffnet haben kann. Um das nachzuvollziehen, müsste man wohl wissen was genau loadFromFile() macht.

  3. #3
    It's magic because cherry is a wizard!

  4. #4
    Nicht ganz:

    Code:
    void Image::loadFromFile(std::string filename, bool throwErrors, bool autoResize) {
    	this->autoResize = autoResize;
    	DStringPtr s(filename);
    	asm volatile("call *%%esi" : "=a" (_eax), "=d" (_edx), "=c" (_ecx) : "S" (0x467ABC), "a" (this), "d" (s.str), "c" (throwErrors) : "cc", "memory");
    }
    Das ist der Source Code von RPG::Image::loadFromFile. Warum das geöffnete Dateien nicht mag, müssen dann wohl eher die Enterbrainer wissen!
    (Wie man sieht, callt das, wie die meisten DynRPG-Funktionen, nur eine RPG-Maker-interne Funktion, in diesem Fall 0x467ABC)

    Btw: Ich finde die GCC-Asm-Syntax einfach nur extrem strange.

    Geändert von Cherry (17.06.2012 um 15:48 Uhr)

  5. #5
    You no ...wizard?

  6. #6


    Genaugenommen ist DynRPG relativ unspektakulär.

    Ich hab jetzt keine Zeit, einen Artikel zu schreiben drüber, aber im Prinzip besteht die Magie im Wesentlichen aus zwei Dingen:
    1) Den Callbacks - An den entsprechenden Stellen in der RPG_RT.exe hab ich Code reingepatcht, der eine entsprechende Funktion in dynloader.dll callt, die dann alle Plugins callt usw.
    2) Den RPG-Klassen - Im Prinzip einfach "nachgebaute" RPG-Maker-Klassen (die also dasselbe Memory Layout haben wie die originalen Delphi-Klassen des RPG-Makers) mit ein paar Methoden, die Hauptsächlich Wrapper für Methoden originalen Klassen sind (wie hier eben RPG::Image::loadFromFile)

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •