Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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
6-1130502643
Сергей1981
2005-10-28 16:30
2006.02.05
Кодировка в WebBrowser


15-1137132775
Тульский
2006-01-13 09:12
2006.02.05
Задача по программированию


2-1137800549
Sysanin
2006-01-21 02:42
2006.02.05
webBrowser


2-1137700639
(CHALING 32)S K i N E R
2006-01-19 22:57
2006.02.05
Число


3-1133529327
barakuda
2005-12-02 16:15
2006.02.05
не фильтрует !!!!!!!!!





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский