Question

Nous voulons utiliser Unicode avec Delphi 2009 et Interbase, et constaté que pour changer le codage de caractères de WIN1252 à UNICODE_FSS ou UTF8, nous devons d'abord remplacer toutes les instances de TStringField avec TWideStringField dans tous DataModules. Pour environ 60 DataModules, nous ne pouvons tout simplement faire plus d'un week-end. Je ne vois que deux options pour une stratégie de migration:

  • trouver une solution qui permet d'utiliser les champs de TStringField existants sans déclencher le « attendu: TWideStringField » erreur

ou

  • supprimer tous les champs persistants afin d'éviter le conflit de type chaîne

Pour autant que je connais les types de champs pour les champs de base de données persistants sont enregistrés dans une sorte de registre de classe. Ne pourrions-nous l'utilisons pour faire croire que Delphi un TStringField est ok pour une colonne de caractères Interbase UNICODE_FSS ou UTF8?

Ou peut-on utiliser un pilote dbExpress commercial qui travaillent avec TStringField dans les deux cas?

Voir aussi ma question connexe: Delphi dbExpress et Interbase: les étapes de migration UTF8 et les risques?


Mise à jour: après avoir remplacé toutes les occurences de TStringField avec TWideStringField dans tous les DFM et les fichiers PAS, nous avons constaté qu'il est maintenant nécessaire de multiplier la valeur de la propriété « Taille » des TWideStringFields par quatre (si l'on utilise UTF8) dans quelque 100 endroits. Je commence donc une prime pour un moyen de réduire le travail manuel pour fixer les dfms

Était-ce utile?

La solution

Utilisation TStringField pour les caractères unicode vous obtiendrez des ennuis, il aura 00 $ en elle, se terminant essentiellement la chaîne avec, par exemple, les pilotes dbExpress, car ceux-ci acceptent P (Ansi) chaînes Char. L'utilisation TWideStringField utilise PWideChar dans dbExpress, afin que le conducteur attend des vrais codepoints unicode.

Il n'y a pas moyen facile, j'ai peur.

Autres conseils

Sergey A Kryukov, « Unicode Controls: Que peut-VCL faire », le magazine Delphi, 116 (Avril 2005), p. 33-43 ( Le code source ) Le magazine Delphi

Unfortunately, the text of the original article is not freely available, but ask me if you have questions.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top