Y a-t-il une contrepartie de la procédure Delete qui pourrait être utilisée pour les widtrings? Ou devrais-je simplement utiliser copier et concaténer les WideStrings résultants?Delphi 2006 system.delete pour les widtrings?
Répondre
Delete est une fonction "compilateur magique". Le compilateur utilise sa connaissance du type de données de base pour gérer l'opération de manière appropriée. Pour la plupart des tableaux, il peut simplement traduire les informations que vous écrivez dans votre code dans le décalage réel et le nombre d'octets qui doivent être supprimés, et les transmet à la routine d'assemblage _Delete
à la place. Pour WideStrings, comme l'a souligné Alexander, il y a une routine spéciale _WStrDelete.
Ligne de fond: Si vous pouvez passer un tableau ou une chaîne à supprimer et qu'il compile, il devrait fonctionner correctement.
Les fonctions RTL internes telles que Delete, Insert, Length, etc. fonctionnent à la fois pour les chaînes Ansi et Wide. Par exemple, l'appel Delete sur WideString est transformé en appel WStrDelete (voir System.pas).
en êtes-vous sûr? dans delphi 2006 c'est juste une fonction d'assembleur ... –
Oui, je suis assez sûr à ce sujet - juste vérifié maintenant dans D2006. Delete for String (AnsiString) est converti en appel LStrDelete et Delete for WideString est converti en appel WStrDelete (voir vue CPU). – Alex
ouais, d'accord, je l'ai remarqué entre-temps, mais merci quand même. –
haha, j'aime juste cette réponse - en particulier que Delphi fait une conversion implicite de String à WideString, chaque fois qu'il n'y a pas de version surchargée de la fonction ... –