2010-10-13 7 views
1

J'ai des formulaires dans Delphi 7 que j'ouvre dans mon IDE. Certains caractères accentués ne s'affichent pas correctement dans le formulaire et lorsque je modifie un formulaire contenant un tel caractère, l'accent est perdu.après avoir sauvegardé la forme delphi, il perd des caractères accentués

E.g. quelque chose codé comme # 337 a dans dfm devient u dans la mémoire enregistrée

Pouvez-vous dire ce qui peut-être tort?

mise à jour: Problème pour corrigé après avoir changé dans Panneau de configuration, région et langue, formats d'onglet. J'ai changé le format de l'anglais à la langue qui a accentué le caractère.

+0

Vous avez vraiment besoin d'Unicode Delphi. –

Répondre

2

Delphi 7 ne prend pas en charge Unicode, uniquement ASCII. C'est pourquoi les caractères "supplémentaires" ne sont pas affichés.

Les contrôles peuvent afficher unicode (car Windows le fait). Mais les fichiers dfm sont toujours ASCII, et vous n'avez aucune garantie sur les caractères au dessus de 127. (Et la VCL ne les supporte pas non plus).

Vous pouvez basculer vers 2010 ou 2011 (XE) pour la prise en charge d'Unicode.

+1

Pour être honnête, je doute que cela soit entièrement vrai. Nous utilisons Delphi 2006, qui n'est pas Unicode, et accents comme dans 'ne vous perdez pas. Par exemple, le mot "Previsión" sera stocké dans le DFM comme "Previsi '# 243'n". Autant que je me souvienne, ce n'était pas un problème dans Delphi 7, mais je ne peux pas le tester. –

+1

Vous pourriez avoir de la chance avec des personnages qui ont des équivalents dans la gamme 128-255. Mais un # 337 ne fonctionnera pas. –

+0

Ça pourrait être ça. :-) –

-3

AFAIR, tout le contenu de DFM est codée en UTF-8, dans les fichiers DFM produits par Delphi 7.

Vous pourriez être en mesure d'utiliser quelque nature qu'elles soient dont vous avez besoin.

Mais vous devez définir la valeur de propriété Font CharSet appropriée pour le composant.

+3

Tout le contenu dfm n'est PAS en UTF-8, il est en ANSI dans Delphi 7. –

2

Dans une version delphi non unicode (delphi 7 par exemple), si votre page de codes actuelle supporte un caractère, alors Delphi stockera votre caractère accent dans le DFM. Si vous rechargez sur un système défini sur une page de codes différente, vous ne verrez pas ce caractère.

Dans un Delphi Unicode (2009 ou ultérieur), vous pourrez stocker n'importe quel code dans les DFM.

+0

@Warren_P: cette page de codes est-elle configurée dans Windows? Ou c'est une configuration à l'intérieur de Delphi? – neves

+0

La page de codes est un paramètre régional dans Windows, en tant que "Langue pour les programmes non Unicode". http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/int_pr_select_language_version.mspx?mfr=true –