En este artículo queremos aclarar una confusión que existe con la función AnsiReplaceStr de la unidad System.StrUtils.
En un artículo anterior, explicábamos la función StringReplace, que reemplaza una o todas las ocurrencias de una subcadena dentro de una cadena.
Pero la función AnsiReplaceStr funciona de la misma manera, si comprobamos su declaración veremos que es idéntica a StringReplace:
Uses
System.StrUtils;
...
función AnsiReplaceStr(const AText, AFromText, AToText: string): string;
Entonces, ¿Porqué tenemos dos funciones que realizan lo mismo?. La confusión esta en el prefijo Ansi, que pareciera que modifica dicha función, pero en realidad, el prefijo Ansi en el nombre de la función aparece solo por razones de compatibilidad con versiones anteriores manejando también variables tipo string.
System.AnsiStrings.StringReplace
Pero, ¿Qué pasa si queremos manejar funciones de tipo AnsiString?. No se preocupen que también hay función para ello. En este caso utilizaremos la función StringReplace pero de la unidad System.AnsiStrings.
Declaración
Uses
System.AnsiStrings;
...
función StringReplace(const S, OldPattern, NewPattern: AnsiString; Flags: TReplaceFlags): AnsiString;
Su funcionamiento es exactamente igual que System.StrUtils.StringReplace con la diferencia de que los tipos de datos son AnsiString.