Форум: "Основная";
Текущий архив: 2003.09.15;
Скачать: [xml.tar.bz2];
ВнизTStringList невзирает на регистр! Найти похожие ветки
← →
Basilio (2003-09-04 16:08) [0]Когда в TStringList добавляю строки, то "aaa" и "AAA" считаются дубликатами! можно это как-нибудь обойти?
Лист создаю так:
SL:=TStringList.Create;
SL.Duplicates:=dupIgnore;
SL.Sorted:=true;
Посмотрел в исходниках: В методе Add вызывается Find, который выглядит так:
function TStringList.Find(const S: string; var Index: Integer): Boolean;
var
L, H, I, C: Integer;
begin
Result := False;
L := 0;
H := FCount - 1;
while L <= H do
begin
I := (L + H) shr 1;
C := AnsiCompareText(FList^[I].FString, S);
if C < 0 then L := I + 1 else
begin
H := I - 1;
if C = 0 then
begin
Result := True;
if Duplicates <> dupAccept then L := I;
end;
end;
end;
Index := L;
end;
Т.е. внутри зашито безразличие к регистру. можно ли это обойти?
(не создавая своего собственного TStringList"a)
← →
Skier (2003-09-04 16:09) [1]
> Т.е. внутри зашито безразличие к регистру. можно ли это
> обойти?
> (не создавая своего собственного TStringList"a)
Нет.
← →
Reindeer Moss Eater (2003-09-04 16:10) [2]Duplicates:=dupAccept
← →
mrcat (2003-09-04 16:10) [3]CaseSensitive ?
← →
ZEE (2003-09-04 16:12) [4]>внутри зашито безразличие к регистру
тоесть зашито?, а TStringList.CaseSensitive тогда зачем?
← →
Skier (2003-09-04 16:14) [5]
> TStringList.CaseSensitive
Это из какого Delphi ?
Я в D5 не нашёл...(только у TDirectoryListBox)
← →
Reindeer Moss Eater (2003-09-04 16:14) [6]нету CaseSensitive в D5
← →
Basilio (2003-09-04 16:14) [7]> to Reindeer Moss Eater
Дубликаты нужно отсеивать. А "aaa" и "AAA" я не считаю дубликтами
> to mrcat
к сожалению в SL не предусмотрен параметр CaseSensitive - для того, чтобы внутри использовался другой метод сравнения.. (D5) :(
> to Skier
Ок. будем свой ваять
> to all
А в документации про то, что SL не CaseSesitive -- ни слова!
ща на седьмых проверю
← →
ZEE (2003-09-04 16:16) [8]>Это из какого Delphi ?
>Я в D5 не нашёл...(только у TDirectoryListBox)
это из Д6 :) сори, топик невнимательно прочитал
← →
mrcat (2003-09-04 16:17) [9]Basilio © (04.09.03 16:14)
в D5 можете наследника сделать с явным указанием AnsiCompareStr.
← →
Basilio (2003-09-04 16:18) [10]ага. в седьмых это подправлено
← →
Skier (2003-09-04 16:20) [11]function TStringList.Find(const S: string; var Index: Integer): Boolean; virtual;
virtual главное твоё оружие. Если в D5...
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2003.09.15;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.012 c