Cargo un objeto TStringList con caracteres. Ejemplo 'T', 'e', 's', 't'
la propiedad indexOf del objecto TStringList devuelve las coincidencias sin tener en cuenta mayúsucla y minúsculas, es decir, no es caso sensitivo.
indexOf('t') devolvería el índice: 0. Que corresponde en realidad a 'T' (mayúscula)
Para corregirlo sustituir la función indexOf por:
function TForm1.searchStringListPosition(miLista: TStringList): integer;
begin
for Result := 0 to miLista.count - 1 do
if AnsiCompareStr(miLista[Result], pString) = 0 then Exit;
Result := -1;
end;
Suerte! Esta tontería me dió muchos dolores de cabeza por eso me gustaría compartir esto.
---------------------------------------
Aclaraciones:
Aclaración 1:
Esta funcionalidad ha podido ser modificada en distintas versiones de delphi según un comenario en: http://fpc-pascal.freepascal.narkive.com/GEdB2ACG/tstringlist-indexof-case-sensitivity
Post by James Mills
Hi,
Is TStringList.indexOf case sensitive or insensitive ?
TStrings.indexOf is case insensitive, but TStringList.indexOf overrides
the TStrings.indexOf implementation accoriding to the documentation.
It is case insensitive, but this was changed recently for DelphiHi,
Is TStringList.indexOf case sensitive or insensitive ?
TStrings.indexOf is case insensitive, but TStringList.indexOf overrides
the TStrings.indexOf implementation accoriding to the documentation.
compatibility.
Older versions are case sensitive. Here are the relevant log entries:
revision 1.15
date: 2003/05/29 23:13:57; author: michael; state: Exp; lines: +5 -2
fixed case insensitivity of TStrings.IndexOf
----------------------------
revision 1.14
date: 2002/12/10 21:05:44; author: michael; state: Exp; lines: +12 -5
+ IndexOfName is case insensitive
----------------------------
Michael