Форум: "Начинающим";
Текущий архив: 2006.02.05;
Скачать: [xml.tar.bz2];
Вниз
В Чем ошибка Найти похожие ветки
← →
Гриша (2006-01-19 19:09) [0]написал ф-цию которая, удалет одинаковые строки в TStrinlist
пишу так:
function TRegForm.IDent(s: TStrings): TStrings;
var
i,j:integer;
begin
for i:=c Downto 0 do
for j:=c Downto 0 do
if (i<>j) and ( s[i]=s[j]) then s.Delete(j);
end;
Но выдает ошибку List index out of bounds , в чем ошибка
← →
umbra © (2006-01-19 19:14) [1]в том, что, допустим, на втром проходе внешнего цикла в стринглисте может остаться
с-5
строк, а обращаться в условии (s[i]
) будет кс-1
строке
← →
Ega23 © (2006-01-19 19:23) [2]используй While
← →
Leonid Troyanovsky © (2006-01-19 19:36) [3]
> Гриша (19.01.06 19:09)
> написал ф-цию которая, удалет одинаковые строки в TStrinlist
См. TStringList.Duplicates
--
Regards, LVT.
← →
Гаврила © (2006-01-19 19:58) [4]
> Leonid Troyanovsky ©
> См. TStringList.Duplicates
Это только для сортированных списков.
По сабжу: Можно и for использовать, надо только алгоритм правильно написать
по моему, совсем не сложно
← →
Гриша (2006-01-19 20:14) [5]Написал с помощью indexOf
function TRegForm.IDent(s: TStringlist): TStringlist;
var
RStr:TStringList;
i:integer;
begin
RStr:=TStringList.Create;
for i := 0 to s.Count - 1 do
if RStr.IndexOf(s[i]) = -1 then RStr.Add(S[i]);
Result:=RStr;
end;
← →
Desdechado © (2006-01-19 22:55) [6]если не жалко памяти на копию списка, то создаем внутри, выставляем сортед=тру, дупликатес=игнор и всасываем в него из исходного
после чего возвращаем
← →
Германн © (2006-01-20 01:04) [7]
> Desdechado © (19.01.06 22:55) [6]
>
> если не жалко памяти на копию списка, то создаем внутри,
> выставляем сортед=тру, дупликатес=игнор и всасываем в него
> из исходного
> после чего возвращаем
"После чего" исходный порядок строк восстановить невозможно. :(
← →
Leonid Troyanovsky © (2006-01-20 08:56) [8]
> Гаврила © (19.01.06 19:58) [4]
>> См. TStringList.Duplicates
> Это только для сортированных списков.
> Германн © (20.01.06 01:04) [7]
> "После чего" исходный порядок строк восстановить невозможно.
В Objects сохраним исходный индекс (порядок появления строки).
Для восстановления исходного порядка - CustomSort.
--
Regards, LVT.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2006.02.05;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.054 c