Stringtable in DLL



  • Morgen Gemeinde,

    kurze Frage: Ich möchte eine Stringtable( in einem RC File ) in eine DLL einbinden, in der die Strings dann auch verwendet werden.

    Also z. B.: in der DLL befindet sich ein Formular mit div. Controls. Die GUI soll nun in deutsch und englisch verfügbar sein, es müssen also die jew. benötigten Texte geladen und angezeigt werden.

    DLL( simpler Aufbau ):

    +- Form1
    +- Form2
    +- RC

    ist das überhaupt möglich? Und wenn ja, wie komme ich dann an die Strings?
    Das ganze läuft über #defines in einem Header
    AnsiString::LoadStr liefert NULL zurück.

    grüssle 🙂

    Edit:
    Lösung:

    AnsiString str = AnsiString::LoadStr( 10001 );
    


  • Warum einfach, wenns auch umständlich geht 😉

    Abhängig von der C++Builder-Version kannst du einfach ein ITE- oder ETM-Mehrsprachenprojekt anlegen; dann kannst du jeweils von Formular und Stringlisten lokalisierte Versionen erstellen. Eine gleichfalls komfortable Möglichkeit ist dxgettext.



  • Ich steh auf umständlich 😃 🕶

    ne, sind nur 2 Formulare mit relativ wenig Text( ~ 40 - 50 Strings ). Da reicht eine STRINGTABLE. Dann noch eine Func, die mir die jeweiligen Strings liefert, und gut is.

    grüssle 🙂



  • ab welcher Version geht das mit dem Mehrsprachenprojekt?



  • Willst Du vielleicht eine DLL nur mit Ressourcen (und damit auch Stringtables) erzeugen?

    Siehe "Creating a resource-only DLL" mit der /NOENTRY Option: http://msdn.microsoft.com/en-us/library/24b2tcy0(VS.80).aspx

    Damit könntest Du auch für jede Fremdsprache eine DLL erzeugen.
    (bzw. der User kann bei Bedarf entfernen wqas er nicht benötigt)

    HTH
    Martin

    [Nachtrag:] Sorry, zu spät erkannt, der Link gilt für Visual Studio.
    Aber ich denke, VCL hat auch eine entsprechende Option dafür.



  • Destiniy schrieb:

    ab welcher Version geht das mit dem Mehrsprachenprojekt?

    C++Builder 2009, soweit ich weiß. Mit dem ETM gehts auch bei älteren Versionen.

    Smitty schrieb:

    Da reicht eine STRINGTABLE. Dann noch eine Func, die mir die jeweiligen Strings liefert, und gut is.

    Genau das macht gettext; für C++Builder nimm einfach dxgettext.



  • wenn man im Builder 2009 ein 2007er Projekt importiert kann man das dann auf mehrsprachig umstellen oder geht das nicht?



  • Destiniy schrieb:

    wenn man im Builder 2009 ein 2007er Projekt importiert kann man das dann auf mehrsprachig umstellen oder geht das nicht?

    Sollte kein Problem sein.
    Ansatzpunkt: Projekt|Sprachen|Hinzufügen... 😉


Log in to reply