Hard coded strings auslagern



  • Hi,

    ich soll ein Programm so ändern, dass alle hardcoded Strings in ein Header bzw. CPP-File ausgelagert werden sollen, damit die Texte übersetzt werden können.
    Das Programm verwendet die MFC.

    Wie kann ich das am klügsten anstellen?

    mfg Trust



  • Entweder Daten in eine Ini Datei schreiben (ist aber Käse, da nicht Betriebssystemunabhängig) oder Du über legst dir eine eine Formatierung (z.B. <ID> \t\t <Text>\t\r\n) und liest die Datei entsprechend der Formatierung aus.

    Wenn Du nur unter Windows arbeitest kannst Du eigentlich auch die Ini Datei nehmen. Die lässt sich relativ einfach beschreiben und auslesen.



  • Wenn die Strings auch gleichzeitig in mehreren Sprachen vorliegen sollen, wäre vielleicht etwas in Richtung Language Datenbank das Richtige (falls nicht zu aufwendig)?

    @Hundeman: Da er MFC verwendet, kann man wohl davon ausgehen, dass er rein für Windows entwickelt.



  • Ich bin noch nicht so erfahren. Aber wäre es theoretisch möglich die Strings als const char* in einen Namespace zu packen und den dann zu verwenden?

    Da es sich ja um hardcoded Strings mit fester Größe handelt wäre das doch möglich oder? Achja: auslagern ist vielleicht das falsche Wort. Die strings sollten wenn möglich nur alle in einem eigenen File sein, damit sie einem Übersetzer gegeben werden können.

    Es muss aber kein externes File sein. Kann auch ein .cpp oder .h File sein.



  • Klar, ich sehe da kein Problem. Probier es doch einfach mal mit einem String aus.



  • @_matze: Naja, während einer Ausbildung war jemand in meiner Klasse der seine MFC Anwendungen auf einem Mac schreiben musste, weil er keinen PC hatte. Von daher ist es für mich durchaus vorstellbar das es nicht Windows sein muss.

    @Trust: das mit cpp oder Header Dateien zu machen ist aber unschön, weil Du dann jedesmal neu kompilieren musst wenn sich was ändernt. Um das ganze übersichtlich zu halten und nicht für jede Sprache ne eigene Version kompilieren zu müssen, würde ich schon ne externe Datei nehmen die Du dann lädst.



  • Hundeman schrieb:

    @_matze: Naja, während einer Ausbildung war jemand in meiner Klasse der seine MFC Anwendungen auf einem Mac schreiben musste, weil er keinen PC hatte. Von daher ist es für mich durchaus vorstellbar das es nicht Windows sein muss.

    Wie? Aber MFC-Anwendung laufen doch nicht unter MacOS. Oder meinst du nur, dass er auf seinem Mac den Quellcode getippt hat? Das wäre ja relativ irrelevant, wichtig ist nur das Zielsystem...



  • Frag mich was leichteres, aber der Quellcode wurde da getippt und auch kompiliert (nicht mit der MS IDE versteht sich).

    EDIT: Achja, ausgeführt natürlich auch.



  • Hundeman schrieb:

    Frag mich was leichteres, aber der Quellcode wurde da getippt und auch kompiliert (nicht mit der MS IDE versteht sich).

    EDIT: Achja, ausgeführt natürlich auch.

    Hm, vielleicht eine VM oder sowas...



  • Ich vermute eher mal das er alternative Bibliotheken in seinem Compiler hatte die dann nicht zu 100% kompatibel sind sondern vielleicht zu 90%. Damit liesse sich der Kram dann halt auf dem Mac ausführen (vermutlich aber auch nur auf nem Mac ^^)



  • Danke für die ganzen Tipps und Anregungen, werd noch ein wenig grübeln wie ich das mache.

    Achja *g* 😃 nur um die Frage zu klären: Ich programmiere schon unter Windows und das Programm muss auch nur unter Windows laufen.

    Danke



  • Trust schrieb:

    Achja *g* 😃 nur um die Frage zu klären: Ich programmiere schon unter Windows und das Programm muss auch nur unter Windows laufen.

    Darum geht es hier doch schon lange nicht mehr! 😃 😉


  • Mod



  • Für sowas hat Microsoft die Stringtabellen in den Ressourcen erfunden.


Anmelden zum Antworten