J'ai un très grand nombre d'applications à convertir en Delphi 2009 et il existe un certain nombre d'interfaces externes qui renvoient pAnsiChars. Est-ce que quelqu'un a un moyen rapide et simple de les renvoyer à pChars? PAnsiChar contient beaucoup de chaînes, mais je peux trouver beaucoup de choses à l'inverse.Y at-il un moyen rapide et sale de Cast PansiChar à Pchar dans Delphi 2009
Répondre
Delphi 2009 a ajouté un nouveau type de chaîne appelé RawByteString. Elle est définie comme:
type
RawByteString = type AnsiString($ffff);
Si vous avez besoin d'enregistrer des données binaires à venir en tant PAnsiString, vous pouvez utiliser. Vous devriez être en mesure d'utiliser RawByteString comme vous l'avez déjà fait pour AnsiString. Toutefois, la solution à long terme recommandée est toujours de convertir vos programmes en Unicode.
Vous devez faire attention avec RawByteString. Tout comme les autres types de chaînes, RawByteString est toujours associé à une page de codes et utilise cette page de codes lors des affectations vers/depuis les chaînes Unicode. La seule différence étant que RawByteString peut changer dynamiquement de page de codes au moment de l'exécution, contrairement à d'autres types de chaînes. RawByteString n'est pas destiné à être utilisé comme un type de chaîne autonome. Son utilisation principale (et seulement recommandée) dans les paramètres de la fonction qui ne se soucient pas quelle page de code est utilisée pour les données de caractères Ansi source. –
Il s'agit d'un projet de mise à niveau et le problème survient avec le code qui parle à Windows (qui attend et renvoie les caractères ANSI). –
Il n'existe aucun moyen de "transformer" un PAnsiChar en PChar. PChar est Unicode dans Delphi 2009. Les données Ansi ne peuvent pas être simplement converties en Unicode, et vice versa. Vous devez effectuer une conversion de données réelle. Si vous avez un pointeur PAnsiChar vers certaines données et que vous souhaitez placer les données dans une chaîne Unicode, attribuez d'abord les données PAnsiChar à un AnsiString, puis affectez la chaîne AnsiString à la chaîne Unicode si nécessaire. De même, si vous devez passer une chaîne Unicode à un PAnsiChar, vous devez d'abord affecter les données à un AnsiString. Il existe des articles sur les sites de blog qui traitent des problèmes de migration de Delphi 2009 sur les sites de blogs Embarcadero's et TeamB's.
Je sautais il y avait une fonction intégrée pour faire cela que j'avais manqué. Maintenant, j'ai ma propre bibliothèque de fonctions pour faire les conversions. –
Est-ce que 'pChr = PChar (string (AnsiString (pAnsiChr)))' que vous cherchez? – Fr0sT