Главная страница
    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.008 c
1-32891
Aleksandr
2002-03-29 15:06
2002.04.11
Общеобразовательный вопрос: как делают форму


1-32746
IGI
2002-03-29 12:57
2002.04.11
Файлы


1-32823
anod
2002-03-29 00:22
2002.04.11
Размер массива


6-32917
eblade
2002-01-25 18:56
2002.04.11
Как отправить через TClientSocket несколько запросов подряд?


6-32922
Ghost.
2002-01-27 00:20
2002.04.11
Инфа по Winsock





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