Frage

kann jemand eine Erklärung oder einen Link geben, der erklärt, wie genau ein StringTable in einer MFC-Ressourcendatei definiert ist und manuell erweitert werden kann?

Ich habe versucht, es zu tun, aber dies nicht in einer Multi-Projektlösung zu tun. Die meisten Projekte in der Lösung verfügen über eigene Ressourcendateien und umbenannten Ressourcen.H-Dateien.

Wenn die Anwendung versucht, auf die String-Ressourcen zuzugreifen, wird die Fehlermeldung 'Ressourcenzeichenfolge für' 22392 '' nicht gefunden 'angezeigt. 22392 ist die ID der Saite, die ich erstellt habe. Ich bekomme keine ähnliche Fehlermeldung, wenn ich stattdessen eine bereits definierte String-ID verwende.

Verwenden des Assistenten des Visual Studio 2010, um eine String-Ressource hinzuzufügen, funktioniert auch nicht. Es wird jedoch korrekt in der Auflistung von Ressourcensymbolen und im String Table-Editor angezeigt.

unnötig zu sagen, dass ich nicht an der Erstellung dieser Lösung teilgenommen habe.

Danke für Ihre Hilfe.

[edit1]

Ich habe die Möglichkeit des Konflikts ausgeschlossen, indem er einen "Find in Files" für den verwendeten Wert und die Verwendung anderer Werte erfüllt: 22390, 22391, 22393, 22394, 22395. Hab immer das gleiche Ergebnis.

[edit2]

Ich habe die Schritte wiederholt, die ich in der komplexen Lösung in einer neuen, sauberen und einfachen MFC-Anwendung mit einem Projekt tat, und es funktionierte problemlos. Ich gehe daher davon aus, dass mein Problem damit zusammenhängt, dass die Lösung mehrere Projekte und Ressourcen aufweist.

Die Schritte waren die folgenden:

    .
  1. Wählen Sie eine freie Nummer in der Ressource.h (der in meinem Fall anders benannt) und füge eine #define ids_xxx freie Nummer hinzu.
  2. Validieren Sie die gewählte Nummer, indem Sie mit einem "Fund in Dateien" mit ihm ausführen.
  3. Fügen Sie eine Zeile zu einem StringTable in Ressource.h hinzu, vorzugsweise nahe an einem IDS_ mit einem Wert in der Nähe des, der ich ausgewählt habe.

    STRINGTABLE
    BEGIN
      IDS_OTHER          "I have a number close to XXX"
      IDS_XXX            "HelloHello"
    END
    

  4. Zugriff auf die Zeichenfolge in der Anwendung:

    CString strMyString;
    strMyString.LoadString(IDS_XXX); 
    AfxMessageBox(strMyString, MB_YESNO | MB_ICONEXCLAMATION);
    

    [edit3]

    Ich habe versucht, den Aufruf von LaDString zu lokalisieren, der die Fehlermeldung verursacht. Die LoadString, die meine String-Ressource nicht lädt, befindet sich in einer Klasse, die sich in demselben Projekt wie die Ressourcendatei (.RC) befindet, die die String-Ressource enthält. Die Fehlermeldung 'Ressourcenzeichenfolge für' 22392 'nicht gefunden' wird dort generiert. Das erklärt zumindest, warum ich nichts gefunden habe, das es googelt.

    [edit4]

    Ich könnte die Ursache weiter isolieren.

    in csttringt.h hinst ist null aka Die String Ressource kann nicht gefunden werden: generasacodicetagpre.

    Dies ist seltsam, da es möglich ist, auf eine weitere Zeichenfolge Ressource innerhalb derselben Ressourcendatei in derselben Ressourcendatei zuzugreifen.

War es hilfreich?

Lösung

Die "Ressourcenzeichenfolge für" 22392 'nicht gefunden "error Sounds, wie Windows diese spezifische Zeichenfolge in der String-Tabelle nicht finden kann, obwohl dies mit Ihrer Anweisung in Konflikt steht", aber es wird korrekt in der Auflistung von Ressourcensymbolen und in der Streichertabelle angezeigt Editor". Ein paar Dinge, die ich tun würde oder überprüfen, um das Problem einzugrenzen:

  • Reinigen Sie das gesamte Projekt und oder die Lösung neu. Ich habe zu viel seltsames Verhalten von vs gesehen, nur aufgrund von schlechtem oder aus dem Datum, dass dies normalerweise das erste ist, was ich versuche.
  • Bearbeiten Sie die RC-Datei in einem Texteditor: Klicken Sie mit der rechten Maustaste auf die RC-Datei und den "Code" in VS2010. Bestätigen Sie, dass die Zeichenfolge 22392 tatsächlich vorhanden und gültig ist. Überprüfen Sie die Einträge auch vorher und danach.
  • Löschen Sie die Zeichenfolge von der String-Tabelle und der Ressource.h. Erstellen Sie die Zeichenfolge erneut vom Ressourcen-Editor.
  • Sie erwähnen "umbenannte Ressource.h-Dateien". Ich bin mir nicht ganz sicher, was Sie meinen, aber stellen Sie sicher, dass diese in der RC-Datei ordnungsgemäß verwendet werden: Sie sollten oben in der Spitze aufgenommen werden, wenn Sie ihn in einem Texteditor ansehen.
  • Stellen Sie sicher, dass der definierte Name für 22392 nicht anderswo in dem Projekt neu definiert ist.

    Wenn sich die Zeichenfolge in der String-Tabelle anweset, und Sie erhalten immer noch den Fehler "nicht gefunden", dann ist etwas anderes weitergültig.

Andere Tipps

Die Definitionen für die IDs sind in Resource.h vorhanden.Wahrscheinlich hat jemand eine Zeichenfolge hinzugefügt und den Eintrag in Ressource gelöscht.h, deshalb zeigt es Ihnen die Fehlermeldung.Öffnen Sie die Ressource.h und fügen Sie #define IDS_XXX 22392 hinzu

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top