[fpc-pascal]TStringList.indexOf (case-sensitivity)
James Mills
prologic at daisy.ods.org
Wed Aug 27 13:59:26 CEST 2003
On Wed, Aug 27, 2003 at 09:39:10AM +0200, Michael Van Canneyt wrote:
>
>
> On Wed, 27 Aug 2003, James Mills wrote:
>
> > 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 Delphi
> 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
> ----------------------------
Is there no other function that searches the list in a case insensitive
way ? I've been looking through the current FCL source and speaking to a
member of the list...
It seems perhaps I should write a descendant of TStringList, which I've
done and works for my purpose.
The other query I have with TStringList, is the sqlite unit uses
CommaText which replaces " with "" and other side affects you don't want
in an IRC Services application. I'm going to have a find a way around
this too. I've solved the problem of null values and quoted string
returns from sqlite by a simple algorithm check.
function TDatabase.simpleQuery(query: String): String;
var
tmp: String;
begin
if NOT (SQL = nil) then
begin
SQL.Query(query, nil);
if (SQL.List_Field.count > 0) then
begin
S := TStringList(SQL.List_Field.items[0]);
tmp := S.Strings[0];
if (tmp[1] = '"') AND (tmp[length(tmp)] = '"') then
begin
if ((length(tmp) - 2) = 0) then
begin
simpleQuery := '';
end
else
begin
(* tmp := copy(tmp, 2, (length(tmp) - 1)); *)
tmp := copy(tmp, 2, length(tmp));
tmp := copy(tmp, 1, (length(tmp) - 1));
simpleQuery := tmp;
end;
end
else
begin
simpleQuery := tmp;
end;
end
else
begin
simpleQuery := '';
end;
end;
end;
This works for what I need.
cheers
James
>
> Michael.
>
>
> _______________________________________________
> fpc-pascal maillist - fpc-pascal at lists.freepascal.org
> http://lists.freepascal.org/mailman/listinfo/fpc-pascal
--
-
-Zero Defect Software Engineers Group - ZDSEG
-
-You need only two tools. WD-40 and duct tape.
-If it doesn't move and it should, use WD-40.
-If it moves and shouldn't, use the tape.
More information about the fpc-pascal
mailing list