CString Implementation



  • Hallo,

    ich habe gehört, dass die CString Implementation der MFC ziemlich scheiße sein soll (langsam).

    Gibt es hier von dritten Firmen irgendwelche anderen Implementationen, die besser sind?

    Sonst müsste ich die selbst schreiben...



  • würde es reichen, std::string mit ner scnittstelle tz verstehen, die wie CString aussieht?



  • Jo, das hatte ich eigentlich vor. Aber ich denke da wird sich nicht viel rausholen lassen, weil ich dann ständig zwischen der normalen CString Klasse und meiner Konvertieren muss, denn die MFC benutzt ja vermutlich Intern die eigene Klasse, also darf ich die Schnittstelle nicht ändern.

    Aber leider gehören ja protected Elemente auch zur Schnittstelle... 😞

    Vielleicht könnte ich tricksen: Soweit ich das gesehen habe, hat die Klasse nur eine Membervariable mit dem Namen

    LPTSTR m_pchData;   // pointer to ref counted string data
    

    Da könnte ich auch einen Zieger auf ein std::string draus machen. Müsste dann natürlich alle Methoden der Klasse entsprechend anpassen. Anschließend muss ich das ganze noch in die MFC Lib hineincompilieren. Normalerweise ist das ja in einer DLL, die ich dann bei jedem Benutzer der Software auswechseln müsste. Hinzu kommt noch, dass andere Programme diese wieder überschreiben werden und vielleicht die hohen Windows Versionen da einen Schutz gegen haben (habe da aber nicht so die Ahnung, habe das nur mal gehört).

    Einfacher wäre es eine Implementierung zu kaufen. Nur wo gibts sowas?



  • ich würde mich es nicht trauen, weil irgend ein sonderdialog in irgend einer dll nen CString konstruiert und dir gibt, und nicht deinen neuen CString einlinkt, sondern seinen CString-Code.
    Linken sich nicht eh alle ihren CSting-Code aus ner DLL, und deine Änderungen würden nur deine EXE betreffen?

    Aber hast eh keine Speed-Probleme, würde ich sagen. CStrings verwendet man ja, wo's viel Grafik gibt. Und die ist aus anderen Gründen eh lahmer. In Sachen MVC trennste Modell und Grafik, dann kannste an dieser Schnittstelle eigentlich sauber nach string wechseln. Leider nur, falls MVC auf dein Projekt paßt, was nicht immer der Fall ist. Anderenfalls schätze ich, daß es nix wird.



  • Naja, im Prinzip müssten alle die CString aus der DLL benutzen. Die MFC kann man ja eigentlich auch statisch linken. Das müsste also schon gehen, wenn ich es irgendwie schaffe, die zu ersetzen.

    Ob ich ein Speed Problem habe, weiß ich nicht. Habe eben nur den Auftrag von meinem Arbeitgeber bekommen, diese CString Klasse mit einem std::string als Implementation zu bauen. Aber wie gesagt, gibts da glaube ich ein paar Probleme.


Anmelden zum Antworten