Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi GB18030 darstellen ? (https://www.delphipraxis.net/187801-gb18030-darstellen.html)

myicq 5. Jan 2016 08:30

Delphi-Version: 6

GB18030 darstellen ?
 
Hallo Alle,

zuerst: Deutsch ist nicht meine Muttersprache.

ich habe mehr oder weniger eine Legacy Project übernommen, geschrieben in Delphi6. Eine graphishe Applikation, was Weltweit verwendet wird.
Leider gibt is in D6 keine UnicodeSupport. Das Projekt is sehr groß, und eine Umstellung auf TNTTools zu umfangreich (jetzt).

Jetzt habe ich die Frage erhalten: wie gebe ich GB18030 ein ?

Heute sind die Charsets von Delphi schon definiert und können zugewiesen werden:
Hier die Code dazu:
Delphi-Quellcode:
       procedure TChildLerred.SetCharset(charset: Integer);
       var
           i: Integer;
          tf: TFont;
          lf: TLogFont;

      {....}
     tf:=TFont.Create;
     try
      tf.Assign(TVariable(ObjListe[i]).fFont);
      GetObject(tf.Handle, sizeof(lf), @lf);
     // Charset zB GB2312_CHARSET = 134 
     // oder SHIFTJIS_CHARSET = 128
      lf.lfCharset:=TVariable(ObjListe[i]).fCharset;
      tf.Handle:=CreateFontIndirect(lf);
      TVariable(ObjListe[i]).fFont.Assign(tf);
      finally
       tf.Free;
     end;
Leider kann ich dabei NICHT die GB18030 eingeben bzw Anwählen. GB18030 ist in Windows die CodePage 54936, und ist eine ANSI-Standard sowie GB2312.

Grund für mein Wunsch mit GB18030 zu arbeiten: die GB2312 kann nicht alles darstellen.

Also Kurz: wie kann ich, wenn überhaupt, mit Codepages in Delphi6 umgehen ?

Bernhard Geyer 5. Jan 2016 08:55

AW: GB18030 darstellen ?
 
Lass es mit Codepage zu arbeiten. Es wird nur eine unvollständige Frickellösung werden.

Wir selbst haben mit D6 unsere Anwendung praktisch vollständig Unicde-Fähig gemacht da zum umstellzeitpunkt 2002 es keine Unicode-VCL gab.
In 2016 würde ich einfach eine Delphi-Version >= 2009 nehmen und mir hiermit einen Großteil der Arbeit abnehmen lassen.

himitsu 5. Jan 2016 10:19

AW: GB18030 darstellen ?
 
Zitat:

Zitat von myicq (Beitrag 1326023)
Leider gibt is in D6 keine UnicodeSupport. Das Projekt is sehr groß, und eine Umstellung auf TNTTools zu umfangreich (jetzt).

Du könntest es eventuell mal damit versuchen http://www.delphipraxis.net/141895-t...phi-other.html

z.B. cnPack oder GExperts bieten Funktionen zum Tauschen von Komponenten, womit man nicht jede Komponente einzeln auf der Form manuell austauschen müsste.



Aber ansonsten würde ich mich meinem Vorredner anschließen.

jobo 5. Jan 2016 10:33

AW: GB18030 darstellen ?
 
TNT will er ja nicht, oder?

Für mich läuft aber die Frage letztlich darauf hinaus, wie kann ich Multibyte Charsets verwenden ohne ein Multibyte fähiges (Entwicklungs-)System einzusetzen. Das kann nicht gehen. (Außer man bastelt eine komplette Eigenlösung, die allerdings noch um ein Vielfaches aufwendiger sein dürfte als die Umstellung auf TNT Komponenten.)

myicq 5. Jan 2016 10:39

AW: GB18030 darstellen ?
 
Ich will absolut TNTTools, aber leider
  1. Das Projekt ist sehr Groß, und deshalb sehr aufwendig zu tun
  2. Meine Qualifikation mit Delphi reicht warscheinlich nicht aus

Danke trotzdem für Rückmeldungen ;)

jobo 5. Jan 2016 10:46

AW: GB18030 darstellen ?
 
Gerade wenn es so groß ist, sollte es kein Problem sein, eine aktuelle Delphiversion dafür einzusetzen.
Die Kosten für die Anschaffung betragen jenachdem weniger als einen Monatslohn.
Auch wenn es eine günstige Möglichkeit ist, TNT einzusetzen, Du hast erheblichen Aufwand, wahrscheinlich mehr als mit einer aktuellen Version und arbeitest dennoch mit Software von vorgestern. Sollte später auf eine aktuelle Delphiversion gewechselt werden, muss TNT wieder ausgebaut werden.

Bernhard Geyer 5. Jan 2016 10:51

AW: GB18030 darstellen ?
 
Zitat:

Zitat von myicq (Beitrag 1326038)
Ich will absolut TNTTools, aber leider
  1. Das Projekt ist sehr Groß, und deshalb sehr aufwendig zu tun
  2. Meine Qualifikation mit Delphi reicht warscheinlich nicht aus

Danke trotzdem für Rückmeldungen ;)

Da hilft nur
* Zeit einplanen
* Fortbildung, Evtl. weiteren Entwickler einstellen wenn es wirklich groß ist.
* Update auf neue IDE-Version.

Wie schon gesagt. Ab D2009 gibt es vollen Unicodesupport.
Jetzt noch irgendwas einzubauen ist vergebliche Liebesmühe. Die TNTs werden auch nicht mehr weiterentwickelt und der letzte freie Stand wurde von TMS gekauft.
Lieber gleich auf neue IDE-Version setzen um nicht jetzt was zu ändern was du in 1-2 Jahren wieder ausbauen musst das du dann eine neue IDE-Version verwendest.


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:15 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz