Header "auslagern"

  • Hi^^
    Ich habe mal wieder eine Frage zur Code Auslagerung xD
    Kennt ihr Möglichkeiten Makros in eine Header Datei zu packen und diese separat zu halten?
    Also nicht in der Exe sondern extra, so damit man das ändern kann.
    Es sollte Funktionieren, da die Flyff Server Files dieses System ja auch benutzen...

    Ich hoffe ihr seit wieder so Kreativ wie beim letzen mal^^

  • [FONT="Comic Sans MS"][COLOR="DeepSkyBlue"][SIZE="3"]Wie meinste das mit auslagern?
    Sollte aber normal gehen, indem du sie dann einfach includest.
    Probiers mal über include, sollte gehen
    Ansonsten weiß ich auch nich viel weiter.
    [/SIZE][/COLOR][/FONT]

  • Also Includen kann ich es nicht, da die Header Datei sonst in der EXE währe.
    Vielleicht hilft es ja wenn ich mal den Ordner "Poste":

    ..\Mein Projekt\Test.exe
    ..\Mein Projekt\Test.h <- Hier will ich meine Makros reinspeichern, so das ich diese nach Lust und Laune ändern kann.

  • [FONT="Comic Sans MS"][COLOR="DeepSkyBlue"][SIZE="3"]hmm schätze dass Offi dementsprechend programmiert ist, dass es klappt oder so.
    Weiß leider selber nicht recht weiter^^
    Mal sehn ibs wer weiß[/SIZE][/COLOR][/FONT]

  • hab kein flyff und weiß nicht genau was du mit makros meinst aber wenn ich iwas editierebn möchte nachdem das programm kompiliert wurde benutze ich einfach tinyXml und lese xml dateien aus die dann die entsprechenden veränderungen liefern (auflösung, vollbild aber auch gespeicherte spiele und das auslesen der statistiken von waffen.

  • Danke ich schaue mal nach xml :-)

    Das was ich Makros nenne sind in wirklichkeit Symbolische Konstanten (Ja ich lass den Streber raushängen xD)
    Diese werden mit #define Definiert. Das sind nichts anderes als Variablen denen man keinen Typ zu weisen muss.
    Sie erhöhen nur die Lesbarkeit des Codes. Es gibt zwar wirkliche Makros in C++, aber die benutze ich nicht^^
    Deshalb habe ich auch keine Ahnung wie die Funken^^

  • [COLOR="DeepSkyBlue"]<Push>
    XML kann ich nicht verwenden...
    Wer hat sonst noch Ideen?^^[/COLOR]

  • beschreib mal genau deine situation (was willste machen? ;))

  • Er will, dass bestimmte Headerdateien wie z.B. bei Flyff extern geladen werden, also veränderbar sind, ohne immer wieder compilen zu müssen.

    [RIGHT][SIZE=1]
    It'll take QQ to a whole new level.[/SIZE]
    [mad][/mad]
    [/RIGHT]

  • [COLOR="DeepSkyBlue"]xD ok^^
    Ich will meine "Makros" (#define) in eine Header Datei schreiben. Diese soll aber für jeder man zugänglich sein.
    Also kann ich sie nicht auf die herkömmliche Art einbinden sondern irgendwie anders^^
    Ich habe mir schon überlegt die Debug Exe zu nehmen, aber da habe ich ja dann abnorme Speed Verluste...
    Ich habe mal einen Screens angehängt, man sagt ja "Bilder sagen mehr als 1000 Worte" ;-)

    PS: TwiLight hat Recht.[/COLOR]

  • [FONT="Comic Sans MS"][COLOR="DeepSkyBlue"][SIZE="3"]hmm da define aber ne präprozessoranweisung ist, wirste somit auf den verzeichten müssen, denn der compiler erfährt nie was vom präprozessor.
    Das is wie ein beanmter der nix ausser seinem büro kennt und papiere von unbekannten kollegen durchgeht.
    Korrigiert mich sollte ich bei diesem ding falsch liegen.

    Jedenfalls, auf die hilfe des präprozessors kannste da nich abun.
    Ich schätze dass offi files drauf programmiert wurden die dinge zu lesen und so halt finden was sie suchen, bzw auch lua spielt in vielen dingen eine roll.
    (lua kann glaub in jeder datei stehn, also von der endung her oder?
    KOmmt ja nur aufn code an meine ich.)[/SIZE][/COLOR][/FONT]

  • [COLOR="DeepSkyBlue"]

    Zitat

    (lua kann glaub in jeder datei stehn, also von der endung her oder?
    KOmmt ja nur aufn code an meine ich.)


    Jap, das stimmt. Habe aber keine Funktion für so etwas gefunden^^

    Zitat

    Das is wie ein beanmter der nix ausser seinem büro kennt und papiere von unbekannten kollegen durchgeht.

    :D

    Zitat

    compiler erfährt nie was vom präprozessor


    Das kann man sich ja vielleicht zu nutzen machen.

    Ich hätte da mal ne Code Idee:


    [/COLOR]

    [COLOR="DeepSkyBlue"]Ich weiß nicht das beste aber wenn jemand Ideen zur Verbesserung hat, her damit :D[/COLOR]

  • [FONT="Comic Sans MS"][COLOR="DeepSkyBlue"][SIZE="3"]Hmm muss dein System morgen mal neu durchlesen^^
    Vll wirds ja in dem Sinne was, wer weiß.
    Und die Endung ist realtiv egal, meine MapEngine die ich in XNA code, benutzt zB .amd Endung für Maps und .ats für tilesets
    Und gelesen kanns trotzdem werden, da ist kein problem dabei.[/SIZE][/COLOR][/FONT]

  • was ich noch nicht so ganz verstanden hab ist wieso du max_server mit #define zu 100 bringen möchtest und dafür nicht einfach einen integer benutzt. dann könntest du das ganze auch mit xml machen. einfach eine xml datei:

    zb
    <values>
    <max_server>100</max_server>
    </values>

    und das dann in einer funktion in der klasse von der benutzung von max_server auslesen lassen und dann ist max_server in deinem programm auch 100 und wenn du den wert in der xml datei veränderst verändert er sich auch in deinem programm. wenn keine xml datei da ist kannste noch ne if schleife einbauen und sonst immer auf 100 setzen oder so.

  • [COLOR="DeepSkyBlue"]Ja, würde auch so gehen ABER vielleicht brauche ich die Variable noch für etwas anderes :-)
    Mit #define werden bei mir immer die wichtigen Sachen deklariert^^[/COLOR]

  • Habe jetzt den Code ausgearbeitet. #define kann man dabei nicht benutzen! Ich habe die ganz normalen Typen benutzt.

    Die Schleife muss von euch selbst eingebaut werden :P

    Edit:
    Noch das File:

    Code
    #define Max_Server 123
  • Zitat von Chaosduckman;155124

    Habe jetzt den Code ausgearbeitet. #define kann man dabei nicht benutzen! Ich habe die ganz normalen Typen benutzt.

    Die Schleife muss von euch selbst eingebaut werden :P

    Edit:
    Noch das File:

    Code
    #define Max_Server 123
    Zitat

    std::cout << "[FAIL] Max_Server : Wrong Typ! (Need Integer)" << std::endl; system("PAUSE"); exit(0);

    Wenn Englisch, dann richtig ^^

    Zu dem Define..
    Bei es einfach in die StdAfx.h ein (Denk mal, du benutzt eine), dann benutzt du

    Code
    #include "defineXXX.h"

    Nun solltest du natürlich den IncludePath der Datei richtig angeben (Am besten nicht im Hauptsource Verzeichnis, sondern Extern, z.B. Includes), und die Datei dort erstellen.

    Nach dem compilen sollte die Datei geladen werden, und variable Ergebnisse genauso o:

    Wenn das nicht hinhaut, lasse solche Dateien über eine separate cpp-Datei laden, in etwa so:

    [RIGHT][SIZE=1]
    It'll take QQ to a whole new level.[/SIZE]
    [mad][/mad]
    [/RIGHT]

  • Zitat von TwiLight

    Nach dem compilen sollte die Datei geladen werden


    Ja und da wären wir beim springenden Punkt.
    Die Datei wird nur beim Compilen eingesen.
    Ich will aber, das sie bei jedem Start gelesen wird^^

    Aber ich weiß nicht ob deine 2. Möglichkeit vielleicht klappt.
    Das müsste ich schnell versuchen^^

    Achja: Hier die Finale Funktion:

    Edit:
    Also bei deiner 2. Funktion bekomme ich einen error beim Ausgeben.
    Also Debuger angeschmissen: Der Variable wurde der super Wert "I" (73) zugewiesen.
    Ich habe aber in meiner Datei #define Max_Server 100 stehen...

    Naja trozdem danke für deine Hilfe :D
    Aber ich benutze lieber meine eigene Funktion^^
    Auch wenn sie bestimmt langsamer/schlechter ist als andere xD

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!