Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.04.11;
Скачать: [xml.tar.bz2];

Вниз

Как в обыкновенном *.TXT файле поудалять одинаковые строки ?   Найти похожие ветки 

 
IronHawk   (2002-03-28 16:40) [0]

Ну САБЖ !
.... заранее благодарен !


 
Alx2   (2002-03-28 16:46) [1]

Задача в общем случае (на файлах большого размера) сложная.
На мелких можно воспользоваться сортированным TStringList и свойством Duplicates = dupIgnore.


 
IronHawk   (2002-03-28 16:48) [2]

ОК !
Это на файлах до 100К, допустимо ?


 
McSimm   (2002-03-28 16:48) [3]

Только после этого строки окажутся отсортированными, что не всегда приемлемо


 
IronHawk   (2002-03-28 16:52) [4]


> McSimm ©

Вот какраз сортировки мне и ненадо !!!!


 
MBo   (2002-03-28 16:55) [5]

можно добавлять строки по одной, проверяя IndexOf



 
IronHawk   (2002-03-28 16:56) [6]


> MBo © (28.03.02 16:55)
> можно добавлять строки по одной, проверяя IndexOf

Да не, это некатит !
У меня просто будет хвататься файл и одинаковые строки должны удаляться !


 
Alx2   (2002-03-28 16:58) [7]

Тогда вот так можно:
Открываем исходный файл (F) на чтение и другой - на запись (W). В него будем складывать "товар".
Читаем строчку из F, и если ее нет в StringList (сортированном и с dupIgnore), то пишем в W. После этого нашу строчку заносим в StringList.
В конце переименовываем W в F и убиваем StringList.


 
MBo   (2002-03-28 17:01) [8]

AssignFile(F1, Fname);
Reset(F1);
while not Eof(F1) do
begin
Readln(F1, S);
If SList.IndexOf(s)<0 then
Slist.Add(s);
end;
CloseFile(F1);
SList.SaveToFile(fname);//или в другое


 
IronHawk   (2002-03-28 17:01) [9]


> Alx2 © (28.03.02 16:58)
> Тогда вот так можно:
> Открываем исходный файл (F) на чтение и другой - на запись
> (W). В него будем складывать "товар".
> Читаем строчку из F, и если ее нет в StringList (сортированном
> и с dupIgnore), то пишем в W. После этого нашу строчку заносим
> в StringList.
> В конце переименовываем W в F и убиваем StringList.

Круто, а они непосоряться ?


 
MBo   (2002-03-28 17:02) [10]

в дополнение
и никакой сортировки


 
IronHawk   (2002-03-28 17:04) [11]


> MBo © (28.03.02 17:01)
> AssignFile(F1, Fname);
> Reset(F1);
> while not Eof(F1) do
> begin
> Readln(F1, S);
> If SList.IndexOf(s)<0 then
> Slist.Add(s);
> end;
> CloseFile(F1);
> SList.SaveToFile(fname);//или в другое

ООО, Само ОНО !
Спасибо !
MBo - СпаСиБо !


 
Alx2   (2002-03-28 17:10) [12]

>MBo © (28.03.02 17:02)
>и никакой сортировки
IMHO эффективность потеряем. Бинарный поиск - слишком лакомая штучка. И бинарная вставка ненамного медленнее.
PS
С парой файлов тормознул, блин.


 
MBo   (2002-03-28 17:12) [13]

Alx2
>эффективность потеряем Бинарный поиск - слишком лакомая штучка
да я не против ;)


 
IronHawk   (2002-03-28 17:26) [14]


> MBo © (28.03.02 17:02)
> в дополнение
> и никакой сортировки

Обалденно, работает, только удаляет все строки, даже НЕодинаковые и оставляет последнюю, как лечить ?


 
MBo   (2002-03-28 19:07) [15]

SList:=TStringList.Create;
в начале

Slist.Free;
в конце


 
IronHawk   (2002-03-29 10:11) [16]


> MBo © (28.03.02 19:07)
> SList:=TStringList.Create;
> в начале
>
> Slist.Free;
> в конце



Спасибо огромное, уже проблемма устранена !



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2002.04.11;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.01 c
3-32658
ZDN
2002-03-20 10:17
2002.04.11
Уважаемые ГУРУ! Помогите чайнику немытому связать два датасета - II


3-32655
Rad
2002-03-18 19:12
2002.04.11
Interbase vs Firebird


14-32952
ShaggyDoc
2002-03-01 11:07
2002.04.11
www.delphipages.com - это не вымысел?


1-32865
LazorenkoX
2002-03-29 11:02
2002.04.11
Создание компонент


1-32726
LazorenkoX
2002-03-30 00:26
2002.04.11
SendMessage or What?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский