Skip to content

Delphi AnsiReplaceStr, declarada por compatibilidad

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.