Est-il possible de modifier TStringField travailler comme TWideStringField à Delphes?
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
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.