String aus Stringtable



  • Hallo Leute!

    Habe eine Problem und benötige Eure Unterstützung.
    Ich habe eine Anwendung welche über eine Resource DLL ihre Strings aus einer Stringtable lädt.

    z.B. Über den Weg:
    Loadstring(IDS_CANNOT_OPENFILE)

    Wobei IDS_CANNOT_OPENFILE lediglich ein int wert representiert.

    Nun habe ich das problem(oder Aufgabe) einen String "IDS_CANNOT_OPENFILE" aus einem z.B. file zu lesen und über diesen meinen string aus der Stringtable zu bekommen.

    Wie soll das Gehen?

    Ich habe es über den Weg
    HRSRC htest = FindResource(AfxGetResourceHandle,"IDS_CANNOT_OPENFILE",(RT_STRING));
    probiert.

    Aber ohne Erfolg. Ich bekomme immer einen Null Pointer zurück.

    Bitte helft mir!



  • EIgtentlich sollte immer "MAKEINTRESOURCE" verwendet werden, wenn Du eine ID übergibst:

    LoadString(MAKEINTRESOURCE(IDS_CANNOT_OPENFILE));
    

    Aus welcher Datei sollst Du denn nun was lesen?
    Wenn Du über einen String eine Ressource finden willst, dann muss als Schlüssel natürlich auch ein String in der Ressource stehen...



  • Sorry habe mich vielleicht ein wenig unklar ausgedrückt.

    Das Problem ist folgendes:

    ich lese aus einem textfile einen Parameter und dieser Parameter liegt als String in folgender Form vor:
    "IDS_CANNOT_OPENFILE"

    So, nun möchte ich den Text eines Labels mit dem String welcher der ID IDS_CANNOT_OPENFILE zugeordnet ist setzen.

    Wie bekomme ich diesen String aus der Resource wenn mir die ID nur als STRING("IDS_CANNOT_OPENFILE") vorliegt.

    Ich denke jetzt sind alle Klarheiten beseitigt. 😉



  • Es gibt drei Möglichkeiten:
    1. Du liest aus der Datei nicht einen String sondern eine ID die Du dann direkt verwenden kannst
    2. Du hast eine zweite Datei, die von dem String auf die ID kommt
    3. Du speicherst in den Ressourcen keine ID (also Zahl) als Key sondern den String



  • Ich bevorzuge wenn Variante 3.

    Aber wenn ich in Visual C++ in einer String Table einen neuen Wert anlege habe ich nicht die Möglichkeit den ID Wert als String anzulegen.

    Wie geht das sonst?



  • Oder was ist mit FindResource?



  • souso20 schrieb:

    Aber wenn ich in Visual C++ in einer String Table einen neuen Wert anlege habe ich nicht die Möglichkeit den ID Wert als String anzulegen.

    Upps, da geb ich Dir natürlich recht... bei einer String-Tabelle geht dies nicht... Somit bliebt nur noch Möglichkeit 1 und 2 übrig 😞



  • ahhhh

    das muss doch einfacher gehen.

    trotzdem danke für deine hilfe.


Anmelden zum Antworten