Frage

Ich habe ein ziemlich großes (Freeware) Projekt mit Delphi 2007 geschrieben, die sowohl die TntUnicodeControls und die TntLXControls Bibliothek verwendet, und ich plane, zu Delphi 2009 zu bewegen.

Leider diese Bibliotheken überall in meinem Projekt verwende ich:

  • Ersatz für VCL steuert Unicode-Fähigkeit zur Verfügung zu stellen
  • Win32-API-Wrapper (meist für den Vergleich von Strings)
  • Die Funktionserweiterungen von TntLXForms, TntLXRegistry, ...
  • Komponenten von Drittanbietern, die TntControls verwenden. (VirtualTrees, SpTBXLib, Updates für D2009 sind verfügbar)

Haben Sie keine Erfahrung und / oder Anregungen bei der Portierung, ein solches Projekt zu Delphi 2009. Ist es ratsam, zunächst Umstellung auf die (kommerzielle) TMS Unicode Kontrollen?

War es hilfreich?

Lösung

kann ich mit einigen dieser helfen, wie ich eine C ++ Builder-Anwendung zu portieren, die TNT bis 2009 von 2007 verwendet Die Umstellung auf Unicode in D2009 überfällig und ist willkommen. Allerdings ist es bedauerlich, dass der Übergang für die wahrscheinlich einfacher ist, das nicht für Unicode in der Vergangenheit benötigt hat, und wahrscheinlich immer noch nicht. Wenn, wie ich, Sie Unicode benötigt und verwendet Troy Wolbrink die große TNT Steuer es zu schaffen, haben Sie einen etwas komplexer Job ...

Die gute Nachricht ist, dass es eine neue Version von TNTControls von TMS Software die unterstützt D2009. Ich habe nicht ausgesehen, aber erwarte, dass es nur eine ‚Fassade‘ Schicht über die nativen VCL-Komponenten Portabilität zu erleichtern. Ich würde die Ansicht, dass, wenn Ihre andere Bibliotheken wieder aufgebaut werden können, es zu benutzen.

Sie können jedoch besser zurück zu nativen VCL Kontrollen gehen, und der Grund dafür ist, String-Typen. TNT Kontrolle haben immer Wide verwendet hin und her Unicode-Strings passieren, und Sie können auch haben Wide Verwendung verstreut durch Ihren eigenen Code. Dies funktioniert, aber es ist nicht ideal, da Wide sollte wirklich nur für COM-Interop verwendet werden, wie es Wraps "den COM-Typ BSTR. Nativer Unicode-Strings in D2009 sind mit Referenzzählung und sollen deutlich schneller sein.

Wenn Sie sich entscheiden, TNT Komponenten mit nativen VCL zu ersetzen, können Sie GExperts verwenden Sie den Befehl „Komponenten ersetzen“ - oder, vielleicht einfacher, eine Suche und ersetzen Sie in Ihrem .DFM und .PAS Dateien (die Sie können in Textform, nicht wahr) ersetzen TTNT mit T.

Andere Tipps

Installieren GExperts; es ist IDE Addin „Komponente ersetzen“, die TTntXXX helfen Umwandlung Kontrollen TXXXX. Versuchen Sie einmal, und ob es in Ordnung ist nur überprüfen „Ersetzen evrywhere in Projekt“.

SpTbx und VirtualTrees kann nur neu kompiliert werden - sie sowohl Unterstützung D2009.

Wenn Sie WinAPI-Wrapper verwendet nur Unicode-API-s zu nennen sie sollten auch in D2009 arbeiten.

Das lässt Sie mit TntLX Kontrollen (TntLXForms, TntLXRegistry, ...). Da sie nicht unterstützt wird, kann es gute Zeit ist, sie trotzdem zu ändern.

Ich empfehle die folgenden Ressourcen:

Marco Cantú Delphi 2009 Handbuch Kapitel 3 (Portierung auf Unicode) http://www.marcocantu.com/dh2009/

Nick Hodges Artikel (Delphi in einer Unicode-Welt) http://blogs.codegear.com/nickhodges/2008/11/20/ 39149

Ich denke, so oder so, es wird eine Menge Arbeit sein. Wahrscheinlich mehr, als wenn Sie die ganze Arbeit nicht getan hatten, um es vor dem Unicode-kompatibel zu machen. Ich persönlich würde über die tms Unicode Kontrollen vergessen und zurück zum vcl gehen. Es wird mehr Schmerz in der Zukunft retten. (Nichts gegen diese Kontrollen, wohlgemerkt.)

Denken Sie auch daran, das D2009 Streichquartette, ist nicht Widedasselbe wie D2007 ist, die Sie zweifellos in Ihrer App verwendet haben. So werden alle Instanzen von Wide, die Sie so fleißig aus Zeichenfolge geändert (das war Ansistring), müssen wieder zurück zu bespannen gehen (die jetzt UnicodeString-).

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