2009-08-26 6 views

Répondre

5

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.

+0

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 ... –

5

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).

+0

en êtes-vous sûr? dans delphi 2006 c'est juste une fonction d'assembleur ... –

+1

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

+0

ouais, d'accord, je l'ai remarqué entre-temps, mais merci quand même. –

Questions connexes